使用i.putExtra将字符串发送到子活动并在textview

时间:2016-07-05 16:25:40

标签: android android-intent android-activity textview

我最近开始学习Android开发(Android Studio)并且非常喜欢它。我自己试图解决这个问题,但我已经到了需要帮助的地步。

我正在编写本教程:http://www.vogella.com/tutorials/AndroidIntent/article.html#exercise-starting-activities

我怀疑在第6.6或6.7步出错了。

我有一个主要活动和一个子活动,我的问题是我发送到子活动的i.putExtra数据没有显示在带有ID的textview中:displayintentextra

这是我的代码:

主要活动:

public class MainActivity extends AppCompatActivity {

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

    public void onClick(View view) {
        EditText text = (EditText) findViewById(R.id.inputforintent);

        String value = text.getText().toString();

        Intent i = new Intent(this, ResultActivity.class);
        startActivity(i);
        i.putExtra("Value1", "Check it");

    }
}

子活动:

public class ResultActivity extends Activity {

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.activity_result);

        Bundle extras = getIntent().getExtras();
        if (extras == null) {
            return;
        }

        String value1 = extras.getString("Value1");
        if (value1 != null) {

            TextView displayintentextra = (TextView) findViewById(R.id.displayintentextra);
            displayintentextra.setText("Value1"); }

    }
}

子活动textview:

<TextView
        android:id="@+id/displayintentextra"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

注意:我不确定TextView是否会显示&#34; Value1&#34;或&#34;检查&#34;如果这个代码是固定的,但它应该显示&#34;检查它&#34;。现在,当我运行应用程序时,TextView为空。

非常感谢您的帮助。

提前致谢, 亚历

2 个答案:

答案 0 :(得分:1)

在MainActivity中,将i.putExtra()放在startActivity方法之前。目前没有将附加组件传递给ResultActivity,因为它在设置额外字符串之前被调用..

Intent i = new Intent(this, ResultActivity.class);
i.putExtra("Value1", "Check it");
startActivity(i);

答案 1 :(得分:1)

在MainActivity中,将i.putExtra("Value1", "Check it");放在第startActivity(i);行之前。

Intent i = new Intent(this, ResultActivity.class);
i.putExtra("Value1", "Check it");
startActivity(i);

在ResultActivity中,将行displayintentextra.setText("Value1");替换为displayintentextra.setText(value1);

if (value1 != null) {

            TextView displayintentextra = (TextView) findViewById(R.id.displayintentextra);
            displayintentextra.setText(value1); }