场景:
用户首次登录并进入主活动,其中包含一个默认打开的主页片段。现在用户从此处转到新活动,在此我向编辑文本添加一些文本,并单击添加按钮,该按钮使用户返回到主活动中的主页片段。
现在我的问题是如何将这些文本添加到我的列表视图中。
由于默认情况下主页片段仅在第一次加载时不包含任何bundle,因此我遇到了麻烦。
当我的主活动加载时,以下内容将触发:
public class HomeFragment extends Fragment {
ListView lv;
public HomeFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
return rootView;
}
}
加载主页片段后,它有一个列表视图,我需要向其中添加一些数据。现在,我通过点击菜单选项进入新的活动。
在这里,我向编辑框中添加一些文本,并通过意图将该数据传递回到主活动,如下所示:
addtask = (Button) findViewById(R.id.btnaddlist);
findViewById(R.id.btnaddlist).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View arg0) {
EditText edit = (EditText) findViewById(R.id.tskname);
Intent i = new Intent(AddTask.this,
MainActivity.class);
String TaskName = edit.getText().toString();
i.putExtra("NewTask", TaskName);
startActivity(i);
}
});
最后,我将使用以下意图获取该值:
String AddedTask ;
if (intent.hasExtra("NewTask")) {
AddedTask = this.getIntent().getExtras().getString("NewTask");
Log.d("Task Added:",AddedTask);
Bundle bundle = new Bundle();
bundle.putString("Task Added", AddedTask);
HomeFragment fragobj = new HomeFragment();
fragobj.setArguments(bundle);
}
现在我的问题是,我在主页片段中有一个列表视图,那么我该如何将这个值添加到列表视图中呢?我试着用以下方法,但是logcat显示我遇到了空指针异常,因为当我的MainActivity加载时,HomeFragment首先加载,并且我无法从意图中获取任何值:
public class HomeFragment extends Fragment {
ListView lv;
public HomeFragment(){}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
lv = (ListView)rootView.findViewById(R.id.tasklist);
Bundle b = getActivity().getIntent().getExtras();
if (b != null) {
ArrayList<String> list = new ArrayList<String>();
ArrayAdapter<String> Listadapter;
String ItemName = getArguments().getString("Task Added");
list.add(ItemName);
Listadapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),android.R.layout.simple_list_item_1, list);
lv.setAdapter(Listadapter);
Listadapter.notifyDataSetChanged();
}
return rootView;
}
}
有人能帮我解决这个问题吗?