Java 我刚刚开始android开发,当我制作这个应用程序时,它在调试时不起作用

Java 我刚刚开始android开发,当我制作这个应用程序时,它在调试时不起作用,java,android,Java,Android,这个应用程序是关于点击一个按钮,并且有一个文本框,当点击时它会改变它的内容 MainActivity.java package com.lost.eventhandling; 导入android.os.Bundle; 导入android.support.v7.app.AppActivity; 导入android.support.v7.widget.Toolbar; 导入android.view.Menu; 导入android.view.MenuItem; 导入android.view.view;

这个应用程序是关于点击一个
按钮
,并且有一个
文本框
,当点击时它会改变它的内容

MainActivity.java

package com.lost.eventhandling;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.support.v7.widget.Toolbar;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
公共类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
设置支持操作栏(工具栏);
按钮willybutton=(按钮)findViewById(R.id.willybutton);
断言willybutton!=null;
willybutton.setOnClickListener(
新建按钮。OnClickListener(){
公共void onClick(视图v){
TextView-willytext=(TextView)findViewById(R.id.willytext);
willytext.setText(“我做到了”);
}
}
);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
}
现在来看看我的xml代码


每当我调试我的应用程序时,它都会发送一条消息,它会意外地停止。 我的安卓显示器给了我这个红色的文本:

FATAL EXCEPTION: main
 Process: com.lost.eventhandling, PID: 2449
 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lost.eventhandling/com.lost.eventhandling.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
     at android.app.ActivityThread.access$800(ActivityThread.java:151)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:135)
     at android.app.ActivityThread.main(ActivityThread.java:5254)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
     at com.lost.eventhandling.MainActivity.onCreate(MainActivity.java:26)
     at android.app.Activity.performCreate(Activity.java:5990)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
     at android.app.ActivityThread.access$800(ActivityThread.java:151) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5254) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

将您的
OnclickListener
按钮的
代码替换为以下代码行:

 Button willybutton=(Button)findViewById(R.id.willybutton);
 TextView willytext=(TextView)findViewById(R.id.willytext);

            willybutton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
            /////PERFORM YOURS OPERATION HERE


                }
            });

在onClick事件之外声明您的textview试试看@尼尔斯:你看过日志了吗
willybutton
显示为空。您确定发布的xml是
activity\u main.xml
?但按钮已定义为@Rohit5k2。。。。!!您是否在活动_main中使用该xml?还有一件事
new Button.OnClickListener(){
应该是
new View.OnClickListener(){
。请参阅@Ravindra_KushwahaWhy的答案?有任何解释吗?@Rohit5k2..由于使用Button.OnClickListener()而不是View.OnClickListener()而发生空指针异常,因此上述代码中出现异常。您认为呢?您是对的,应该是
视图。onClickListener
,但这不是问题所在。在这种情况下,
NPE
不会发生。错误日志清楚地表明,
setOnClickListener
方法应用于空引用。OP没有使用按钮xml。请参阅帖子上的评论。您的意思是,发问者没有获得按钮的正确id,因此发生了这些异常。?按钮甚至不在活动中使用的xml中。这导致
findViewById
返回空值。