默認情況下,我在創建家庭片段啓動時有一個導航抽屜。現在從我的主要活動中,我進入下一個活動,我執行一些操作並使用onActivityResult返回mainactivity。在片段中獲取活動結果
高興在這裏一切工作正常。這是我的問題。
我在我的HomeFragment中有一個listview,所以在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,其中I需要更新這些值:
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;
}
}
我沒有收到任何錯誤,並且沒有顯示listview。請告訴我。
@ downvoter護理的人發表意見 – coder
我已經發布了2個回答。我認爲我使用newInstance()的最新版本足以滿足您的需求。 –