android - 当子 Activity 关闭时更新 Activity

标签 android android-activity oncreate onresume activity-stack

我有一个 Activity 堆栈,例如:

activity A make something

activity A call Activity B (without finish();)

activity B make something

activity B call activity C

activity B finish();

activity C make something

activity C finish();

我想更新 Activity A 的 View ,因为 Activity C 所做的修改已更新数据库,也许我要在 Activity A 中列出不同的内容。

如果我的主要 Activity 是这样的:

public class MainActivity extends ListActivity {
     private pollDataSource datasource;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        datasource = new pollDataSource(this);
        datasource.open();

        Cursor values = datasource.getAllCategorie();

        String[] categorieColumns =
            {
                MySQLiteHelper.COLUMN_NOME   // Contract class constant containing the word column name

            };


            int[] mWordListItems = { R.id.categoria_label };


        SimpleCursorAdapter adapter = new SimpleCursorAdapter(
                getApplicationContext(),               // The application's Context object
                R.layout.single_list_item,             // A layout in XML for one row in the ListView
                values,                                // The result from the query
                categorieColumns,                      // A string array of column names in the cursor
                mWordListItems,                        // An integer array of view IDs in the row layout
                0);                                    // Flags (usually none are needed)


        setListAdapter(adapter);
    }


    @Override
        protected void onListItemClick(ListView l, View v, int position, long id) {

          TextView textView = (TextView) v.findViewById(R.id.categoria_label); 
          String text = textView.getText().toString(); 

          Intent myIntent = new Intent(MainActivity.this, domandeDiCategoria.class);
          myIntent.putExtra("categoriaName", text);
          myIntent.putExtra("categoriaId", id);
          datasource.close();
          MainActivity.this.startActivity(myIntent);

        }   




    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }




}

我必须编写 onResume() 吗?并使其类似于onCreate?或者我可以使用相同的光标、相同的适配器等来“更新” View ?什么更好?

最佳答案

1) 在A Activity 中定义

public static int UPDATE_A_ACTIVITY  = 1;

2) startActivityForResult(intentB, A.UPDATE_A_ACTIVITY);//从A开始B

3) startActivityForResult(intentC, A.UPDATE_A_ACTIVITY);//从B开始C

4) 当 C Activity 一切正常时,完成 C Activity 并通知 A Activity ,他应该更新一些内容

在 C Activity 中:

 finish();
 setResult(RESULT_OK);

5) 调用setResult(RESULT_OK);后将调用A中的下一个方法(将其写在A Activity 中):

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) {
    case UPDATE_A_ACTIVITY:
        if (resultCode == RESULT_OK) {
            // update what u want
        }
            break;
    }
}

关于android - 当子 Activity 关闭时更新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991275/

相关文章:

android - Activity之间的动画,其中一个是singleTask

android - Activity 和 fragment 之间有什么区别?

android - onCreate() 和 onStart() 对 Activity 启动的性能影响是什么

android - 如何将颜色转换为十六进制?

android - 在 Android.mk 中添加外部 jar 引用

android - 使用onstart命令后如何停止服务?

java - 将我现有的服务器连接到 GCM

android - 寻找以单一 Activity 应用程序方法在 Android 中实现 SearchView 的想法

android - super.onCreate(savedInstanceState);

java - 非静态方法调用,无需在 onCreate() 内创建对象