尝试调用虚拟方法';void android.widget.TextView.setText(java.lang.CharSequence)和#x27;关于空对象引用

尝试调用虚拟方法';void android.widget.TextView.setText(java.lang.CharSequence)和#x27;关于空对象引用,android,android-layout,android-intent,android-activity,Android,Android Layout,Android Intent,Android Activity,无法使用intent将数据从一个片段传递到另一个片段。逻辑很好。请检查主活动的最后部分,我使用putExtra向其他活动发送了字符串 以下是MainActivity.java: public class MainActivity extends Activity implements View.OnClickListener { EditText ed1,ed2,ed3,ed4,ed5,ed6; Button bt1; TextView tv1,tv2; @Override protected

无法使用intent将数据从一个片段传递到另一个片段。逻辑很好。请检查主活动的最后部分,我使用putExtra向其他活动发送了字符串

以下是MainActivity.java:

public class MainActivity extends Activity implements View.OnClickListener {
EditText ed1,ed2,ed3,ed4,ed5,ed6;

Button bt1;
TextView tv1,tv2;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ed1=(EditText)findViewById(R.id.editText);
    ed2=(EditText)findViewById(R.id.editText2);
    ed3=(EditText)findViewById(R.id.editText3);
    ed4=(EditText)findViewById(R.id.editText4);
    ed5=(EditText)findViewById(R.id.editText5);
    ed6=(EditText)findViewById(R.id.editText6);
    tv1=(TextView)findViewById(R.id.textView);
    tv2=(TextView)findViewById(R.id.textView2);
    bt1=(Button)findViewById(R.id.button);
    bt1.setOnClickListener(this);
}
public void onClick(View v)
{

    String str1=ed1.getText().toString();
   String str2=ed2.getText().toString();
    String str3=ed3.getText().toString();
    String str4=ed4.getText().toString();
    String str5=ed5.getText().toString();
    String str6=ed6.getText().toString();

    if(str1.matches("") || str2.matches("") || str3.matches(""))
    {
        tv1.setText("One or more fields missing");
        if(str4.matches("") || str5.matches("") || str6.matches(""))
        {
            tv2.setText("One or more fields missing");
        }
    }

    else {
        int age1 = Integer.parseInt(ed2.getText().toString());
        int age2 = Integer.parseInt(ed5.getText().toString());

        int l1 = str1.length();
        str1 = str1.toLowerCase();
        str4 = str4.toLowerCase();
        int l2 = str4.length();

        int[] a = new int[26];
        int[] b = new int[26];

        for (int i = 0; i < l1; i++) {

            char c = str1.charAt(i);
            int x = (int) c - 97;
            a[x]++;
        }
        for (int i = 0; i < l2; i++) {

            char c = str4.charAt(i);
            int x = (int) c - 97;
            b[x]++;
        }
        int s=0,p;
        for(int i=0;i<26;i++)
        {
            if(a[i]>b[i])
                p=a[i];
            else
                p=b[i];

            s+=p;
        }
        if(l1>l2)
            p=l1;
        else
            p=l2;
        double love1=(double)(s/p)*100;
        double love2=0.0,x;

        if(age1>age2) {
            p = age1;
        x=age2;
        }
        else {
            p = age2;
            x=age1;
        }
        love2=(double)(x/p)*100;

        Intent in=new Intent(MainActivity.this,SecondActivity.class);
        String s1=""+love1;
        String s2=""+love2;



        in.putExtra("k1",str4);
       in.putExtra("k2",str4);
        in.putExtra("k3", love1);
        in.putExtra("k4",love2);
        startActivity(in);
        finish();


    }


}


}
以下是我得到的错误:

 Process: khurana.nikhil.lovemeter, PID: 4019
java.lang.RuntimeException: Unable to start activity ComponentInfo{khurana.nikhil.lovemeter/khurana.nikhil.lovemeter.SecondActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390)
        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:5257)
        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.TextView.setText(java.lang.CharSequence)' on a null object reference
        at khurana.nikhil.lovemeter.SecondActivity.onCreate(SecondActivity.java:32)
        at android.app.Activity.performCreate(Activity.java:5990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
下面是activity_second.XML:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"
android:layout_height="match_parent"   android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:background="#cefcfd"
tools:context="khurana.nikhil.lovemeter.SecondActivity">


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:id="@+id/textView3"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="68dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:id="@+id/textView4"
    android:layout_below="@+id/textView3"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="51dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:id="@+id/textView5"
    android:layout_above="@+id/textView6"
    android:layout_alignStart="@+id/textView6"
    android:layout_marginBottom="84dp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text=""
    android:id="@+id/textView6"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="51dp" />
</RelativeLayout>

tv8=(TextView)findViewById(R.id.editText4);
tv9=(TextView)findViewById(R.id.editText5);
tv10=(TextView)findViewById(R.id.editText6);
将这些更改为:

tv8=(TextView)findViewById(R.id.textView4);
tv9=(TextView)findViewById(R.id.textView5);
tv10=(TextView)findViewById(R.id.textView6);

您刚刚使用了错误的id。

如果您在运行时在程序中看到以下类型的空指针异常

java.lang.NullPointerException: *Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)'* on a null object reference
        at MainActivity.onCreate(MainActivity.java:17)
当您的应用程序将立即崩溃时,请检查布局文件中的TextView中是否存在任何错误,并与访问此TextView的相应Java/Kotlin文件中的视图id相匹配

    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"

添加正确的id名称 例如:-

//wrong id name
<TextView
  android:id="@+id/nameTv"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="NameOne"
  android:textColor="#000000" />

//right id name
<TextView
  android:id="@+id/nameOneTv"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="NameOne"
  android:textColor="#000000" />

nameOneTv=(TextView)item.findViewById(R.id.nameOneTv);
//错误的id名称
//右id名称
nameOneTv=(TextView)item.findViewById(R.id.nameOneTv);

如果id名称错误,则会产生问题….

请添加activity_second.xml。请参阅以下链接。可能的副本请查看xml文件。ID与代码不同。如果ID用于不同的视图,它将抛出一个
ClassCastException
。但是由于它们不存在,它只返回那里的
null
。谢谢,伙计。它起作用了。这是一个多么愚蠢的错误。。另一个问题是:该应用程序在emulator中运行良好,但在移动设备上无法运行。它生成一个错误,说明:解析包时出现问题。@mrtn。请你回答我的问题好吗?
//wrong id name
<TextView
  android:id="@+id/nameTv"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="NameOne"
  android:textColor="#000000" />

//right id name
<TextView
  android:id="@+id/nameOneTv"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="NameOne"
  android:textColor="#000000" />

nameOneTv=(TextView)item.findViewById(R.id.nameOneTv);