【问题标题】:Update values in MainActivity every time when opened每次打开时更新 MainActivity 中的值
【发布时间】:2013-04-07 16:42:27
【问题描述】:

如何在每次打开 MainActivity 时调用它的 onCreate?

我想这样做: 我打开我的应用程序,这是我的 MainActivity,然后我打开 ActivityB 并保存一些数据。当我关闭我的 ActivityB 时,我会回到 MainActivity,但我在 MainActivity 中的数据没有更新,因为没有调用 onCreate。

这样解决是否正确(这是可行的,但我知道这不是一个好方法):

前往 ActivityB 的按钮:

 public void ActivityB(View view){
    Intent intent = new Intent(this, ActivityB.class);
    startActivity(intent);
    finish();
}

返回MainActivity的按钮:

public void Back(View view){
    finish();
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
}

【问题讨论】:

  • 你想在OnCreate方法中做什么?
  • 改为在 onResume() 中执行。
  • @Leandros - 我正在从 ActivityB 中创建的数据库中读取数据。

标签: android eclipse android-activity oncreate


【解决方案1】:

你应该看看这个: http://developer.android.com/training/basics/activity-lifecycle/pausing.html

基本上,每个活动都有除“onCreate”之外的更多事件,例如“onResume”,在这种情况下应该在 MainActivity 回到前台时调用,并且您应该将代码放在那里。

【讨论】:

  • 对不起,我犯了一个错误,刚刚更正了它,它现在可以工作了!谢谢!
【解决方案2】:

假设您在主 Activity A 中有一个 Textview,并且您正在使用

设置文本
Textview myTextview =(Textview)findViewbyId(R.id.textview1);
myTextView.setText("Android");

您正在从 Activity A 导航到 Activity B。当 Activity B 完成时,将调用 Activity A 的 onResume() 方法。所以在onResume()中更新textview如下

onResume(){
myTextview.setText("Jelly Bean")};

所以当你回到屏幕时,无论你想更新什么视图,都可以在该活动的 onResume() 方法上进行。希望清楚

【讨论】:

    【解决方案3】:

    使用startActivityForResult

    public void ActivityB(View view){
    Intent intent = new Intent(this, ActivityB.class);
    startActivityForResult(intent, 1);
    

    }

    然后在onActivityResult

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
        super.onActivityResult(requestCode, resultCode, intent);
    
        String sp = intent.getStringExtra("sp");
    }  
    

    在活动 B 中

    @Override
    public void onBackPressed()
    {
        Intent i = new Intent();
        i.putExtra("sp", value); // the change value of sp
        setResult(RESULT_OK);
    }
    

    【讨论】:

    • 需要更新什么样的数据,在onActivityResult中做什么
    • 我需要通过读取数据库表来更新字符串。我正在这样做: SQLiteDbHelper db = new SQLiteDbHelper(this);字符串 sp = SQLiteDbHelper.getSP();
    • 创建一个更新String的函数,在onCreate中调用,在onActivityResult中调用。
    • 能不能把 MainActivity 和 onActivityResult 的 onCreate 和刚刚创建的函数贴出来。
    • 同理:SQLiteDbHelper db = new SQLiteDbHelper(this);字符串 sp = SQLiteDbHelper.getSP(); onActivityResult 是:super.onActivityResult(requestCode, resultCode, intent);然后是我的功能
    猜你喜欢
    • 2019-03-22
    • 2020-07-25
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多