这可能表明对活动生命周期的理解最令人震惊,但请同情。我最终会想要从Activity A
多次调用Activity B
,每次都将一个不同的参数传递给Activity B
,然后由用户响应并存储/设置各种公共变量。作为这方面的先驱,我只想让我的脑袋围绕Activity A
看到Activity B
已更改的公共变量的变化。如何在活动A更改活动B后显示公共文本
我有三个非常简单的类:Common.java
持有公共变量,主要活动MainActivity.java
和儿童活动Child.java
。目前只有一个公共变量;它是字符串mess1
,它被初始化为"***"
。目前所有的代码在MainActivity
中点击mainbutton
时,它调用Child
。在Child
中,我们立即将mess1
设置为"Child here"
,然后将基于Child
的文本TextView
设置为mess1
。在点击Child
的childbtn
按钮,我们finish()
子活动(当然,系统返回我们MainActivity
。
当这个应用程序运行时,凌晨看到MainActivity
显示三颗星。当mainbutton
被按下时,我们去。Child
,看看"Child here"
显示当按下childbtn
,我们回到MainActivity
但三颗星仍然存在,虽然我们确实知道mess1
目前持有"Child here"
我的问题是: 1.为什么,当我们知道mess1
已被更改,MainActivity
仍然显示"***"
从Child
活动返回? 2.我需要在代码中更改以获取"Child here"
才能显示?
相关代码摘录如下。在此先感谢您的帮助。
Common.java
public class Common
{
public static String mess1 = "***";
}
MainActivity.java
public class MainActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mainbutton = (Button)findViewById(R.id.mainbutton);
TextView maintop = (TextView)findViewById(R.id.maintop);
mainbutton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
startActivity(new Intent(MainActivity.this, Child.class));
}
});
maintop.setText(Common.mess1);
}
Child.java
public class Child extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_child);
TextView childtext = (TextView) findViewById(R.id.childtext);
final Button childbtn = (Button) findViewById(R.id.childbtn);
Common.mess1 = "Child here";
childtext.setText(Common.mess1);
childbtn.setOnClickListener
(new View.OnClickListener()
{public void onClick(View v)
{finish();
}
}
);
}
谢谢,奥尼克。这就是诀窍! Onik。 –
接受完成,Onik。也许你可以帮助我的下一篇文章(刚刚发布),即“在Android Studio中,不能从Activity A多次调用Activity B”。 –