java - 当我尝试运行此应用程序时出现 setOnClickListener 错误

标签 java javascript android jquery button

我正在尝试创建一个指向我制作的称为绘图 View 的 View 类的按钮链接,唯一的问题是应用程序崩溃,并且我在 logcat 中收到错误。如果有人对这个问题有任何有用的信息,我将不胜感激。这是我的 Main.class 代码

public class Main extends Activity {
    DrawingView v;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        //this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);


        //LinearLayout layout1 = new LinearLayout (this);
        //FrameLayout game = new FrameLayout(this);
        //final DrawingView s = new DrawingView (this);

        //TextView myText = new TextView(this);

        Button startButton = (Button) findViewById(R.id.startbutton);



        //redCircle.setWidth(300);
        //redCircle.setText("niggers");

        setContentView(R.layout.main);
        //layout1.addView(myText);
        //layout1.addView(redCircle); 
        //redCircle.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));

        //game.addView(myText);
        //game.addView(v);
        //game.addView(layout1);
        //setContentView(R.layout.main);
        //setContentView(v);
        startButton.setOnClickListener(new View.OnClickListener() {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }



}

这是 logcat 错误

04-22 05:12:21.693: E/AndroidRuntime(1921): FATAL EXCEPTION: main
04-22 05:12:21.693: E/AndroidRuntime(1921): Process: com.Tripps.thesimplegame, PID: 1921
04-22 05:12:21.693: E/AndroidRuntime(1921): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Tripps.thesimplegame/com.Tripps.thesimplegame.Main}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
04-22 05:12:21.693: E/AndroidRuntime(1921):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at android.app.ActivityThread.access$800(ActivityThread.java:144)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at android.os.Handler.dispatchMessage(Handler.java:102)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at android.os.Looper.loop(Looper.java:135)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at android.app.ActivityThread.main(ActivityThread.java:5221)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at java.lang.reflect.Method.invoke(Native Method)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at java.lang.reflect.Method.invoke(Method.java:372)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
04-22 05:12:21.693: E/AndroidRuntime(1921): Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
04-22 05:12:21.693: E/AndroidRuntime(1921):     at com.Tripps.thesimplegame.Main.onCreate(Main.java:49)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at android.app.Activity.performCreate(Activity.java:5933)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
04-22 05:12:21.693: E/AndroidRuntime(1921):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
04-22 05:12:21.693: E/AndroidRuntime(1921):     ... 10 more

最佳答案

更改顺序,

Button startButton = (Button) findViewById(R.id.startbutton);
setContentView(R.layout.main);

到,

setContentView(R.layout.main);
Button startButton = (Button) findViewById(R.id.startbutton);

确保您在 setContentView 中指定了正确的布局,并检查布局中按钮是否具有 ID startbutton

关于java - 当我尝试运行此应用程序时出现 setOnClickListener 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29788364/

相关文章:

java - 构造函数参数是否应该声明为final

java - 如何在 EAR 或 WAR 之外存储 Java EE 配置参数?

java - Drools Core DRL - 仅触发一条具有最高显着性的规则,跳过其他规则

javascript - Node.js 检测两个 Mongoose 查找何时完成

javascript - 改变彩虹蠕虫的颜色

android - java.lang.SecurityException : Failed to find provider questions for user 0; expected to find a valid ContentProvider 错误

android - 从 Kotlin 协程访问类变量

java - 将我们的应用程序从Oracle JRE迁移到openJDK JRE是否有任何影响?

javascript - web3 websocket连接阻止节点进程退出

java - 了解Android中的R类