Android 尝试使用复选框发送意图时,应用程序在启动时崩溃

Android 尝试使用复选框发送意图时,应用程序在启动时崩溃,android,android-intent,Android,Android Intent,我正在尝试为一个项目创建一个应用程序,该应用程序通过5个复选框发送一个意图。这些复选框有一个条件,用于查找在“我的第二个活动”中显示之前所选复选框的总数 我的问题是,我的代码符合要求,但在启动时立即崩溃。我试着对部分内容进行注释,以找出导致它的原因,但没有成功 我对安卓系统的开发还比较陌生,所以我确信这很简单,我做错了 package com.example.cptbetty.dailymichaelmassard; import android.app.Activity; impor

我正在尝试为一个项目创建一个应用程序,该应用程序通过5个复选框发送一个意图。这些复选框有一个条件,用于查找在“我的第二个活动”中显示之前所选复选框的总数

我的问题是,我的代码符合要求,但在启动时立即崩溃。我试着对部分内容进行注释,以找出导致它的原因,但没有成功

我对安卓系统的开发还比较陌生,所以我确信这很简单,我做错了

    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请结束此问题:)