【发布时间】:2015-07-21 04:02:03
【问题描述】:
默认情况下,在创建我的主片段启动时,我有一个导航抽屉。现在从我的 mainactivity 转到下一个活动,在那里我执行一些操作并使用 onActivityResult 返回到 mainactivity。
到目前为止,一切正常。我的问题来了。
我的 HomeFragment 中有一个列表视图,因此在 onActivityResult 中我得到了在其他活动中执行的值。现在如何将这些值传递给我的主片段。
这就是我从 mainactivity 启动新活动的方式:
Intent i = new Intent(MainActivity.this, AddTask.class);
startActivityForResult(i,1);
现在在 AddTask 中,我执行一些操作并发送回主活动,如下所示:
Intent i = new Intent(AddTask.this,MainActivity.class);
setResult(RESULT_OK, i);
finish();
现在在我的 MainActivity onActivityResult 中:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
AddedTask = data.getStringExtra("NewTask");
CategoryName= data.getStringExtra("CategoryItem");
TaskTime=data.getStringExtra("TaskTime");
SharedPreferences settings = getSharedPreferences("taskdetails",
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString("NewTask", AddedTask);
editor.putString("CategoryItem", CategoryName);
editor.putString("TaskTime", TaskTime);
editor.commit();
}
if (resultCode == RESULT_CANCELED) {
//Write your code if there's no result
}
}
}
现在我的 HomeFragment 中有一个 listView,我需要在其中更新这些值:
public class HomeFragment extends Fragment {
ListView lv;
static final String TAG ="HomeFragment";
private AdapterListViewData adapterListViewData;
private ArrayList<DataShow> listData = new ArrayList<DataShow>();
private ListView listViewData;
String CategoryName,TaskTime;
String AddedTask;
public HomeFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
listViewData = (ListView)rootView.findViewById(R.id.listViewData);
SharedPreferences settings = this.getActivity().getSharedPreferences("taskdetails",
Context.MODE_PRIVATE);
AddedTask = settings.getString("NewTask",null);
CategoryName= settings.getString("CategoryItem",null);
TaskTime=settings.getString("TaskTime",null);
listData.add(new DataShow(AddedTask,CategoryName,TaskTime));
adapterListViewData = new AdapterListViewData(getActivity().getBaseContext(),listData);
adapterListViewData.notifyDataSetChanged();
return rootView;
}
}
我没有收到任何错误,并且未显示列表视图。请给我建议。
【问题讨论】:
-
@downvoter-关注评论
-
我已经发布了 2 个答案。我认为我最新的使用 newInstance() 足以满足您的需求。
标签: android android-fragments android-listview