应用程序强制停止。为什么?
我无法解码logcat报告。我正在学习android并尝试在单个应用中实现intent,toast和自定义toast。应用程序强制停止。为什么?
据我所知,我做得很对。我正在附加logcat跟踪。
FATAL EXCEPTION: main
Process: com.bt4u.customtoast, PID: 24490
Theme: themes:{default=overlay:com.rr.neptune, iconPack:system, fontPkg:com.rr.neptune, com.android.systemui=overlay:com.rr.neptune, com.android.systemui.navbar=overlay:com.rr.neptune}
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.bt4u.customtoast/com.bt4u.customtoast.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:2450)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5466)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
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.bt4u.customtoast.MainActivity.onCreate(MainActivity.java:21)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5466)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
主要活动
b1 = (Button)findViewById(R.id.button1);
b2 = (Button)findViewById(R.id.button2);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast toast = Toast.makeText(MainActivity.this,"Just clicked",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.BOTTOM|Gravity.RIGHT,0,0);
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,second.class);
startActivity(i);
}
});
}
还告诉我如何使用日志跟踪
你需要反转你设置你的按钮以便找到问题:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button)findViewById(R.id.button1);
b2 = (Button)findViewById(R.id.button2);
这非常重要,因为您首先需要拨打setContentView
,因为那个v然后使用视图呼叫view.findViewById
。如果您在设置视图之前尝试这样做,您将无法获取任何视图的元素。
编辑:关于你提到的第二个问题,替换:
Toast toast = Toast.makeText(MainActivity.this,"Just clicked",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.BOTTOM|Gravity.RIGHT,0,0);
有:
Toast.makeText(MainActivity.this,"Just clicked",Toast.LENGTH_SHORT).setGravity(Gravity.BOTTOM|Gravity.RIGHT,0,0).show();
你调用的setContentView方法错了地方
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button)findViewById(R.id.button1);
b2 = (Button)findViewById(R.id.button2);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast toast = Toast.makeText(MainActivity.this,"Just clicked",Toast.LENGTH_SHORT);
toast.setGravity(Gravity.BOTTOM|Gravity.RIGHT,0,0);
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this,second.class);
startActivity(i);
}
});
Toast部分主程序中是否有任何错误?因为我在运行这个应用程序时得到了敬酒信息。 – Swarnveer
尝试这一个一个....你评论和取消评论吐司消息..... @Override 保护无效onCreate(Bundle savedInstanceState){ // Toast.makeText(this,“onCreate =”,Toast.LENGTH_LONG) 。显示(); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toast.makeText(this,“onCreate =”,Toast.LENGTH_LONG).show(); } –
相关部分是'产生的原因: java.lang.NullPointerException:试图调用虚拟方法'void android.widget.Button.setOnClickListener(android.view.View $ OnClickLi (MainActivity.java:21)',这意味着在你的类MainActivity中,你试图在Button上设置一个'onClickListener',这个对象在com.bt4u.customtoast.MainActivity.onCreate为空 – NSimon
但我检查这是不正确的。 – Swarnveer
从您的MainActivity发布一些相关的代码 – jayeshsolanki93