首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在被活动B更改后,如何在活动A中显示公共文本?

在被活动B更改后,如何在活动A中显示公共文本?
EN

Stack Overflow用户
提问于 2015-10-20 22:24:41
回答 2查看 100关注 0票数 2

这可能表明了对活动生命周期最令人震惊的缺乏理解,但请表示同情。我最终想要多次从Activity B调用Activity A,每次都向Activity B传递一个不同的参数,然后由用户响应,并存储/设置各种公共变量。作为这一点的前兆,我只想了解一下Activity A是如何看待Activity B更改的公共变量的。

我有三个非常简单的类:包含公共变量的Common.java、主活动MainActivity.java和子活动Child.java。现在只有一个公共变量;它是字符串mess1,它被初始化为"***"。此时,代码所做的就是在mainbutton中单击MainActivity时调用Child。在Child中,我们立即将mess1设置为"Child here",然后将Child-based TextView中的文本设置为mess1。在单击Child中的Child按钮时,我们将子活动(当然,系统将返回给MainActivity )。

当这个应用程序运行时,我们可以看到MainActivity中显示的三星级。当按下mainbutton时,我们转到Child并看到"Child here"显示。当childbtn被按下时,我们返回到MainActivity,但是,三星仍然存在,尽管我们确信mess1现在持有"Child here"

我的问题是: 1.为什么当我们知道mess1已被更改时,MainActivity仍然在从Child活动返回时显示"***"?2.我需要在代码中更改什么才能使"Child here"显示?

相关代码摘录如下。提前谢谢你的帮助。

Common.java

代码语言:javascript
复制
public class Common
{
    public static String mess1 = "***";
}

MainActivity.java

代码语言:javascript
复制
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

代码语言:javascript
复制
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();
                 }
             }
            );
}
EN

Stack Overflow用户

发布于 2015-10-20 22:44:54

很可能您正在返回回栈历史记录,并且正在恢复先前处于暂停状态的活动,因此不调用onCreate,而是调用(初始活动的) onResume。

不建议以这种方式使用全局状态,但是如果您在onResume方法中放置了适当的代码,则这种方法应该可以工作。

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33247865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档