Java 在通过意图传递字符串时有困难
所以我有两个应用程序页面。应用程序应该将拾取的任务传递到第二页,然后在下一页显示。我得到的是在第二页的创建nothing时,分配给change的textView将变为nothing,而不是fire。 第一页:Java 在通过意图传递字符串时有困难,java,android,Java,Android,所以我有两个应用程序页面。应用程序应该将拾取的任务传递到第二页,然后在下一页显示。我得到的是在第二页的创建nothing时,分配给change的textView将变为nothing,而不是fire。 第一页: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
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);
}
您已经创建了两个不同的Intent
对象onCreate()
创建一个Intent
设置文本,但在其他方面对其不做任何操作goToTimerList()
创建一个Intent
并立即用它启动一个活动,但不设置任何额外内容。因为您已经在本地为每个函数声明了每个意图变量,所以即使它们具有相同的名称,它们也是完全不相关的。由于您不需要onCreate()
中的Intent
进行任何操作,因此您只需在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中使用变量。您真的试图使用意图在同一应用程序中的多个视图之间传递数据吗?意图是指在多个应用程序之间传递数据。如果只有一个应用程序可以显示多个视图,则不需要使用意图。但是,在任何情况下,您的第二个视图都不会收到任何文本,因为您没有将任何文本放入您开始的意图中。你的代码创建了两个独立的意图对象,一个有文本,一个没有文本,然后开始第二个意图(一个没有任何文本)。我试图通过多个活动传递数据。我在网上买了一些课程,他们就是这么说的。有更好的方法吗?可能是链接?“意图是在多个应用程序之间传递数据。”这是不正确的。意图也常用于在同一个应用程序中的两个活动之间传递数据。您应该在每个代码片段周围显示类{…}
,以明确哪个代码在哪个类中。基本上使它看起来像项目中的.java文件。
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);
}