Android 尝试使用复选框发送意图时,应用程序在启动时崩溃
我正在尝试为一个项目创建一个应用程序,该应用程序通过5个复选框发送一个意图。这些复选框有一个条件,用于查找在“我的第二个活动”中显示之前所选复选框的总数 我的问题是,我的代码符合要求,但在启动时立即崩溃。我试着对部分内容进行注释,以找出导致它的原因,但没有成功 我对安卓系统的开发还比较陌生,所以我确信这很简单,我做错了Android 尝试使用复选框发送意图时,应用程序在启动时崩溃,android,android-intent,Android,Android Intent,我正在尝试为一个项目创建一个应用程序,该应用程序通过5个复选框发送一个意图。这些复选框有一个条件,用于查找在“我的第二个活动”中显示之前所选复选框的总数 我的问题是,我的代码符合要求,但在启动时立即崩溃。我试着对部分内容进行注释,以找出导致它的原因,但没有成功 我对安卓系统的开发还比较陌生,所以我确信这很简单,我做错了 package com.example.cptbetty.dailymichaelmassard; import android.app.Activity; impor
package com.example.cptbetty.dailymichaelmassard;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
public class DailyMichaelMassardActivity extends
Activity implements View.OnClickListener {
CheckBox checkBox1 = findViewById(R.id.checkBox1);
CheckBox checkBox2 = findViewById(R.id.checkBox2);
CheckBox checkBox3 = findViewById(R.id.checkBox3);
CheckBox checkBox4 = findViewById(R.id.checkBox4);
CheckBox checkBox5 = findViewById(R.id.checkBox5);
int sum = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_daily_michael_massard);
checkBox1.setOnClickListener(this);
checkBox2.setOnClickListener(this);
checkBox3.setOnClickListener(this);
checkBox4.setOnClickListener(this);
checkBox5.setOnClickListener(this);
}
public void onSend(View view)
{
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(StatusActivity.MSG_Title, sum);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, sum);
startActivity(intent);
}
@Override
public void onClick(View v)
{
sum = 0;
if (checkBox1.isChecked())
{
sum += 1;
}
else{
sum += 0;
}
if (checkBox2.isChecked())
{
sum +=1;
}
else {
sum += 0;
}
if (checkBox3.isChecked())
{
sum += 1;
}
else{
sum =+ 0;
}
if (checkBox4.isChecked())
{
sum += 1;
}
else{
sum += 0;
}
if (checkBox5.isChecked())
{
sum +=1;
}
else {
sum += 0;
}
return;
}
}
事故日志:
10-03 02:22:28.868 5566-5566/com.example.cptbetty.dailymichaelmassard E/AndroidRuntime:致命异常:main
流程:com.example.cptbetty.dailymichaelmassard,PID:5566
java.lang.RuntimeException:无法实例化活动组件信息{com.example.cptbetty.dailymichaelmassard/com.example.cptbetty.dailymichaelmassard.dailymichaelmassard.DailyMichaelMassardActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.view.view.android.view.Window.findViewById(int)”
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2832)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3037)
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)上
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:193)
位于android.app.ActivityThread.main(ActivityThread.java:6642)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“android.view.view android.view.Window.findViewById(int)”
在android.app.Activity.findviewbyd(Activity.java:2654)上
位于com.example.cptbetty.dailymichaelmassard.DailyMichaelMassardActivity。(DailyMichaelMassardActivity.java:11)
位于java.lang.Class.newInstance(本机方法)
位于android.app.AppComponentFactory.InstanceActivity(AppComponentFactory.java:69)
位于android.app.Instrumentation.newActivity(Instrumentation.java:1215)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2820)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3037)
在android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
在android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)中
在android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)中
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1797)上
位于android.os.Handler.dispatchMessage(Handler.java:106)
位于android.os.Looper.loop(Looper.java:193)
位于android.app.ActivityThread.main(ActivityThread.java:6642)
位于java.lang.reflect.Method.invoke(本机方法)
位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
活动im将意向发送至:
package com.example.cptbetty.dailymichaelmassard;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class StatusActivity extends Activity {
public static final String MSG_Title = "message";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_status);
Intent intent = getIntent();
String s = intent.getStringExtra(MSG_Title);
TextView completeView = findViewById(R.id.completeView);
completeView.setText(s);
}
}这里有错误>>
复选框checkBox4=findViewById(R.id.checkBox4)
把它移到后面去
setContentView
您尝试在加载视图之前查找视图。。。
所以,解决办法是
声明变量并在onCreate中赋值后,在setContentView之后添加崩溃日志pleaseread answer pleaseAwesome,这修复了崩溃问题。现在我遇到了一个问题,目的是不被发送到其他活动。相反,它会打开一个“与共享”窗口。@Cptbetty是变量“sum”是字符串变量?到目前为止没有,its和int。我的目的是将int传输到另一个活动,并让它根据接收到的数字显示一条消息。@Cptbetty只需尝试传递任何固定字符串而不是变量sum@Cptbetty请结束此问题:)