【发布时间】:2015-11-09 16:14:04
【问题描述】:
在我的应用程序中,我有一个选项卡布局(总共 4 个),每个选项卡都包含一个由 ViewPagerAdapter 管理的 ListFragment,我想要做的是在活动时更新其中一个 ListFragment 的内容(使用操作栏)完成,并可能将焦点设置在右侧选项卡上。
我已经搜索了一个解决方案,我找到了这个:update ListFragment when Activity finishes,但似乎不适用于我的情况。
在我使用的 MainActivity 中启动活动(用于添加用户以显示在列表中的活动):
Intent intent = new Intent(this, CreateUser.class);
startActivityForResult(intent, 101);
在我设置的 CreateUser 活动结束时:
setResult(Activity.RESULT_OK);
finish();
在 ListFragment 类中:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if ((requestCode == MYACTIVITY_REQUEST_CODE) && (resultCode == Activity.RESULT_OK)){
((BaseAdapter)adapter).notifyDataSetChanged();
}
}
但是当活动结束时,什么也没有发生,因为 onActivityResult 永远不会被调用。我该怎么办?
编辑:添加类以获得最佳理解
CreateUser.java
public class CreateUser extends AppCompatActivity {
//The user creation process is done inside class ProcessCreateUser
//that extend AsycTask
private class ProcessCreateUser extends AsyncTask<String, String, JSONObject> {
//...
//onPreExecute, doInBackground
//...
@Override
protected void onPostExecute() {
super.onPostExecute();
//db op...
//at this point the db is updated with the new user and close the activity
finish();
}
}
public void onDestroy(){
Tab3.updateFragmentList();
}
}
Tab3.java(ListFragment 类)
public class Tab3 extends ListFragment implements Observer
{
//in onActivityCreated(Bundle savedInstanceState) i get the data from the db and set the adapter
@Override
public void update(Observable observable, Object data) {
}
public static void updateFragmentList() {
//problem: i can't get the adapter from a static function
//but this must be static for be called from CreateUser
((BaseAdapter)adapter).notifyDataSetChanged();
}
}
【问题讨论】:
标签: android android-activity android-listfragment