通过意图传递字符串的麻烦

时间:2016-12-31 00:49:50

标签: java android

所以我有两个应用页面。该应用程序应该将pickedTask传递到第二页,然后它应该显示在下一页上。我得到的是在第二页的创建,没有任何textView分配给更改没有任何东西,而不是 fire http://imgur.com/a/iymeW

第一页:

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class);
    goodIntentions.putExtra("pickedTask", "Fire");
}

public void goToTimerList(View view){
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class);
    startActivity(goodIntentions);
}

第二页:

        TextView mahTextView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(com.example.cluel.oc.R.layout.activity_timer_list);
    mahTextView = (TextView) findViewById(R.id.taskText);

}

public void Test(View view){
    Intent goodIntentions = getIntent();
    String mahString = goodIntentions.getStringExtra("pickedTask");
    mahTextView.setText(mahString);
}

1 个答案:

答案 0 :(得分:1)

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class);
    goodIntentions.putExtra("pickedTask", "Fire");
}

public void goToTimerList(View view){
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class);
    startActivity(goodIntentions);
}

您已创建了两个不同的Intent个对象。 onCreate()创建Intent设置文本,但不对其进行任何操作。 goToTimerList()创建Intent并立即启动活动,但不设置任何额外内容。因为您已在每个函数本地声明了每个intent变量,所以即使它们具有相同的名称,它们也完全不相关。由于您不需要Intent onCreate()中的任何内容,因此您应该将所有逻辑放在goToTimerList()中启动第二个活动,包括在Intent中设置文本:

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

public void goToTimerList(View view){
    Intent goodIntentions = new Intent(getApplicationContext(), TimerList.class);
    goodIntentions.putExtra("pickedTask", "Fire");
    startActivity(goodIntentions);
}

我建议您了解局部变量和字段。这两个主题将帮助您更多地了解我们如何在Java中使用变量。