android按钮启动活动错误

时间:2013-12-04 11:38:50

标签: android

按下图像按钮

时,我使用此代码启动活动
     import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        OnClickListener listnr=new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i= new Intent(MainActivity.this, FlashActivity.class);
                 startActivity(i);
            }
      };
      Button imageButton1 =(Button) findViewById(R.id.imageButton1);
      imageButton1.setOnClickListener(listnr);
}
}

崩溃任何人都可以告诉我此代码中的错误

错误 12-04 14:30:02.506:E / AndroidRuntime(31514):致命异常:主要 12-04 14:30:02.506:E / AndroidRuntime(31514):java.lang.RuntimeException:无法启动活动ComponentInfo {com.app.flash / com.app.flash.MainActivity}:java.lang.ClassCastException:android .widget.ImageButton无法强制转换为android.widget.Button 12-04 14:30:02.506:E / AndroidRuntime(31514):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2185) 12-04 14:30:02.506:E / AndroidRuntime(31514):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210) 12-04 14:30:02.506:E / AndroidRuntime(31514):在android.app.ActivityThread.access $ 600(ActivityThread.java:142) 12-04 14:30:02.506:E / AndroidRuntime(31514):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1208) 12-04 14:30:02.506:E / AndroidRuntime(31514):在android.os.Handler.dispatchMessage(Handler.java:99) 12-04 14:30:02.506:E / AndroidRuntime(31514):在android.os.Looper.loop(Looper.java:137) 12-04 14:30:02.506:E / AndroidRuntime(31514):在android.app.ActivityThread.main(ActivityThread.java:4931) 12-04 14:30:02.506:E / AndroidRuntime(31514):at java.lang.reflect.Method.invokeNative(Native Method) 12-04 14:30:02.506:E / AndroidRuntime(31514):at java.lang.reflect.Method.invoke(Method.java:511) 12-04 14:30:02.506:E / AndroidRuntime(31514):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:791) 12-04 14:30:02.506:E / AndroidRuntime(31514):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558) 12-04 14:30:02.506:E / AndroidRuntime(31514):at dalvik.system.NativeStart.main(Native Method) 12-04 14:30:02.506:E / AndroidRuntime(31514):引起:java.lang.ClassCastException:android.widget.ImageButton无法强制转换为android.widget.Button 12-04 14:30:02.506:E / AndroidRuntime(31514):at com.app.flash.MainActivity.onCreate(MainActivity.java:17) 12-04 14:30:02.506:E / AndroidRuntime(31514):在android.app.Activity.performCreate(Activity.java:5008) 12-04 14:30:02.506:E / AndroidRuntime(31514):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 12-04 14:30:02.506:E / AndroidRuntime(31514):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2139) 12-04 14:30:02.506:E / AndroidRuntime(31514):... 11 more

5 个答案:

答案 0 :(得分:7)

使用它可以解决您的问题

 Intent i= new Intent(CurrentActivity.this, UpcomingActivity.class);
 startActivity(i);

不要忘记在清单文件中定义您的类。

对于Ex:

Button imageButton1 =(Button) findViewById(R.id.imageButton1);

        imageButton1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 Intent i= new Intent(CurrentActivity.this, UpcomingActivity.class);
     startActivity(i);
            }
        });

确保在xml文件中包含按钮而不是imageButton。如果xml文件中的图像按钮,则需要如下所述:

ImageButton imageButton1 =(ImageButton) findViewById(R.id.imageButton1);

答案 1 :(得分:1)

启动按钮上的活动点击:

 OnClickListener listnr=new OnClickListener() {
        @Override
        public void onClick(View v) {
              Intent i= new Intent(v.getContext(),FlashActivity.class);
              startActivity(i);
        }
  };

并确保您已在FlashActivity

中声明了AndroidManifest.xml活动

答案 2 :(得分:1)

              OnClickListener=new OnClickListener()
              {
               @Override
                  public void onClick(View v) {
                   Intent i= new Intent(context,classname);
                 startActivity(i);
     }
 };
   Button imageButton1 =(Button) findViewById(R.id.imageButton1);
   imageButton1.setOnClickListener(listnr);

答案 3 :(得分:0)

在您的活动中定义此变量     公共上下文上下文;

并在你的侦听器写入之前创建:     上下文=此

并使用context.startActivity(i)

更改startactivity(i)

希望有所帮助

答案 4 :(得分:0)

尝试他的方式:

OnClickListener listnr=new OnClickListener() {
        @Override
        public void onClick(View v) {

              startActivity(new Intent("currentActivity.this, FlashActivity.class"));
        }
  };
  Button imageButton1 =(Button) findViewById(R.id.imageButton1);
  imageButton1.setOnClickListener(listnr);