gpt4 book ai didi

android - 从 fragment 中的包中将项目添加到 ListView

转载 作者:太空狗 更新时间:2023-10-29 14:09:41 24 4
gpt4 key购买 nike

场景:

第一个用户登录并转到 mainactivity,其中包含默认打开的 homefragment。现在,用户从这里转到新 Activity ,我在其中添加了一些文本以编辑文本,然后单击添加按钮,该按钮使用户返回到主 Activity 中的主页 fragment 。

现在我的问题是如何将此文本添加到我的 ListView 中。

默认情况下,home fragment 第一次加载时不包含任何包。

首先,当我的主 Activity 加载时触发:

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;
}

}

加载主页 fragment 后它有一个 ListView ,我需要向其中添加一些数据。现在,我通过单击菜单选项转到新 Activity 。

在这里,我向 edittext 添加了一些文本,并将该数据通过 intent 传递回 mainactivity,如下所示:

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);
}
});

最后,我使用 intent 获取值,如下所示:

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);
}

现在我的问题是我在 homefragment 中有一个 ListView ,那么如何将这个值添加到 ListView 中我正在尝试使用这种方式,但 logcat 向我显示空异常,因为当我的 mainactivity 加载主 fragment 首先加载并且我没有从 Intent 中获得任何值时:

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;
}

}

谁能帮我解决这个问题?

最佳答案

1- 从 HomeFragment/MainActivity 启动第二个 Activity AddTaskActivity 使用

startActivityForResult(addTaskIntent, CODE_ADD_TASK);

2- 现在在您的 AddTaskActivity 中将 btnaddlist 回调更改为

@Override
public void onClick(View v) {
EditText edit = (EditText) findViewById(R.id.tskname);
Intent i = new Intent();
String TaskName = edit.getText().toString();
i.putExtra("NewTask", TaskName);
setResult(RESULT_OK, i);
finish();
}

3- 在您的 MainActivity 中覆盖方法 onActivityResult()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == CODE_ADD_TASK) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
String taskName = data.getStringExtra("NewTask");
// send this data to your Fragment and add it to the list
}
}
}

关于android - 从 fragment 中的包中将项目添加到 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30027910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com