在另一个Activity上调用onBackPressed时Android更新活动

时间:2014-09-23 02:44:40

标签: java android android-activity

正如标题所示,我的目的是在另一个ActivityMainActivity”被重新按下时更新一个ActivityAddActivity”上的变量。目前,我可以在MainActivity上更新变量的唯一方法是当我创建它的新实例时,我不想这样做。我希望更新变量发生在已经实例化的MainActivity上。代码的一些片段如下:

public class AddActivity extends MainActivity { 
    ....
    @Override
    public void onBackPressed() {
        super.onBackPressed();
        updateMain();
    }
}

public class MainActivity extends Activity {
    ....    
    // This gets executed when the Activity gets created
    @Override
    protected void onStart() {
        super.onStart();
        Log.d("tag", "main onstart");
        updateMain();
    }

    protected void updateMain() {    
        DBAdapter dba = new DBAdapter(this);
        dba.open();
        ....
        double cost = dba.getCost();
        String costString = String.valueOf(cost);
        textView.setText(costString);
        dba.close();
    }   
}

3 个答案:

答案 0 :(得分:1)

AddActivity扩展了MainActivity,因此当您在AddActivity中调用updateMain()时,它将调用AddActivity的updateMain而不是MainActivity,因此它将不起作用。

public class AddActivity extends MainActivity { 
    ....
    @Override
    public void onBackPressed() {
        super.onBackPressed();
        updateMain();// it is this.updateMain, while 'this' here means a AddActivity instance.
    }
}

我认为AddActivity扩展MainActivity不是必须的(也许......)。您可以将数据写入SharePreference,然后从您的MainActivty中读取它。

答案 1 :(得分:0)

感谢@ EricHua23的一点顿悟,我没有需要延长MainActivityupdateMain()正在调用AddActivity' s {{1 }}。所以我做了一个自定义updateMain() Activity类,它通过重写RootActivityMainActivity实例存储到变量中,我只是让所有类扩展{{1 }}。这样,我可以通过此变量访问onCreate()

答案 2 :(得分:0)

您可以使用AddActivity中的Handler和主要活动onBackpressed通过使用处理程序和在您想要的AddActivity Handler更新变量内部使用Handler更新主活动来添加活动 在Application Class中定义处理程序并生成它的setter和getter方法,并在mainActivity和AddActivity中使用它。