У меня есть ящик для навигации по умолчанию, чтобы создать мой исходный фрагмент. Теперь из моей основной деятельности я перехожу к следующему действию, где выполняю некоторые операции и возвращаюсь к mainactivity, используя onActivityResult.Получить результат деятельности в Фрагмент
Upto здесь все работает нормально. Вот моя проблема.
У меня есть список в моем 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
}
}
}
Теперь у меня есть listView в моем HomeFragment, где я необходимо обновить эти значения:
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-Care, чтобы комментировать – coder
Я отправил 2 ответов. Я думаю, что мой последний при использовании newInstance() достаточен для ваших нужд. –