嗨,大家好我是从Android世界开始的,正如问题所示,我已经陷入了困境。我做了一些研究,并尝试了在这个社区发布的一些答案,但我无法弄明白。
我有一个显示联系人列表的活动,列表中的每个项目都会在点击后导航到详细信息视图。我的目标是通过de item id来执行请求并显示响应。
这是我的尝试:
public class PersonDetailActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
// This variables have the right value
String personName = intent.getStringExtra("personName");
String personID = intent.getStringExtra("personID");
Bundle bundle = new Bundle();
// I'm trying to send this variable to make a request later
bundle.putString("personID", personID);
// Set Fragment Arguments
PersonDetailFragment fragment = new PersonDetailFragment();
fragment.setArguments(bundle);
setContentView(R.layout.persons);
}
}
public class PersonDetailFragment extends Fragment {
public PersonDetailFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// This throw me a NPE
String data = null;
if (getArguments() != null) {
data = getArguments().getString("personID");
}
final View rootView = inflater.inflate(R.layout.person_detail_list, container, false);
return rootView;
}
}
先谢谢你们
答案 0 :(得分:2)
尝试为您的项目设置监听器:
public void onItemClick(ItemView itemView) {
personId = itemView.getPersonId();
Fragment detailFragment = PersonDetailFragment.newInstance(personId);
getSupportFragmentManager()
.beginTransaction()
.replace(your_fragment_container, detailFragment)
.commit();
}
下一步是片段初始化。使用静态方法创建片段是一种很好的做法。将此方法写入适当的片段类:
public static PersonDetailFragment newInstance(String personId) {
Bundle args = new Bundle();
args.putString("personId", personId);
PersonDetailFragment fragment = new PersonDetailFragment();
fragment.setArguments(args);
return fragment;
}
答案 1 :(得分:0)
如果您在创建Fragment
实例后不需要传递任何变量,请在构造函数中传递参数,如下所示。
PersonDetailFragment fragment = new PersonDetailFragment(personID);
像这样成为Fragment的构造函数:
public PersonDetailFragment(String personID) {
// Required empty public constructor
}
如果您想与活动不断沟通,您可以实现接口。阅读这篇文章,从listeners
开始,这是一个很好的观点。
https://developer.android.com/training/basics/fragments/communicating.html
答案 2 :(得分:0)
您似乎没有将片段添加到您的活动中?
如果您的片段位于活动的布局xml中,那么它与您正在创建的片段和在Java中添加参数的片段不同。
您需要以编程方式将片段添加到活动中。