我没有收到我打算进行第二次活动而传递的字符串

时间:2018-09-28 12:34:03

标签: java android android-intent error-handling

在需要急忙的时候,我会花所有时间。

我只是想将信息从我的主要旅行到其他活动。 但是数据不会进入其他活动。

请稍等一下。

MainActivity.class

public class MainActivity extends AppCompatActivity {

public static final String KEY = "KEY";
Button button;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button = findViewById(R.id.button);

    button.setOnClickListener(v -> {

        Intent intent = new Intent(MainActivity.this, OtherActivity.class);

        intent.putExtra(KEY, "FONCTIONNE");

        startActivity(intent);

        });
    }
}

OtherActivity.class

import static com.example.marguerite.experiences.MainActivity.KEY;

public class OtherActivity extends AppCompatActivity {

Button button;
TextView textView;
String text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_other);

        button = findViewById(R.id.button);
        textView = findViewById(R.id.textview);

        text = getIntent().getStringExtra(KEY);

        textView.setText(text);

        button.setOnClickListener(v ->finish());
    }
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.marguerite.experiences">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme"
    android:fullBackupContent="@xml/backup_descriptor">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".OtherActivity" />
</application>

</manifest>

错误事件

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: com.example.marguerite.experiences, PID: 8496
              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.marguerite.experiences/com.example.marguerite.experiences.OtherActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
               Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
                  at com.example.marguerite.experiences.OtherActivity.onCreate(OtherActivity.java:26)
                  at android.app.Activity.performCreate(Activity.java:7136)

有。我当然忘了一些东西,但是我看过的所有教程都使用相同的简单技术。

2 个答案:

答案 0 :(得分:1)

以下一行...

textView.setText(text);

...引发以下错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference

,表示textView为空。 textview中没有ID为activity_other.xml的视图。确保该视图存在并排除任何错字。

另请参阅:What is a NullPointerException, and how do I fix it?

答案 1 :(得分:0)

以上所有答案都应该有效,但是如果仍然无法解决,请尝试更改

 button = findViewById(R.id.button);
    textView = findViewById(R.id.textview);  

 button = (Button)findViewById(R.id.button);
    textView = (TextView)findViewById(R.id.textview);  

在两个活动中

,当您在OtherActivity中获得意图时,请像

那样调用它
text = getIntent.getStringExtra("KEY");