所以我有一个带有TabLayout的应用程序。在那里,我创建了2个标签(片段)。我的第一个片段是OngletCours,第二个片段是OngletNotes。
我在第一个标签/片段中有一个ListView。我想将我在ListView中单击的项目转移到第二个片段到TextView。
我已经尝试了一些东西,但是我在第23行得到了NullPointerException:
03-06 09:38:32.874 23677-23677 / com.example.dasilvadd.students E / AndroidRuntime:FATAL EXCEPTION:main 显示java.lang.NullPointerException 在com.example.dasilvadd.students.OngletNotes.onCreateView(OngletNotes.java:23)
这是我的第一个标签 OngletCours (仅限setOnItemClickListener)中的代码:
final ListView l1 = (ListView) rootView.findViewById(R.id.ListCours);
l1.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
OngletNotes fragment = ((Onglets)getActivity()).getOngletNotes ();
if(fragment != null) {
l1.getItemAtPosition(i);
//Put the value
OngletNotes onotes = new OngletNotes();
Bundle args = new Bundle();
args.putString("Item","l1.getItemAtPosition(i)");
onotes.setArguments(args);
getFragmentManager().beginTransaction().add(R.id.container, onotes).commit();
}
((Onglets)getActivity()).goToFragment(1);
}
});
return rootView;
}
这是我的第二个标签 OngletNotes 中的代码:
public class OngletNotes extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.ongletnotes, container, false);
//where i want to insert the selectedItem
TextView Cours = (TextView)rootView.findViewById(R.id.TVCours);
//Retrieve the value
//THE ERROR IS HERE !
String cours = getArguments().getString("Item");
Cours.setText(cours);
return rootView;
}
public static OngletNotes newInstance() {
OngletNotes fragment = new OngletNotes();
return fragment;
}
所以,我不知道如何将所选项目转移到第二个标签。 我是否必须在我的TabbedActivity中创建名为 Onglets 的方法?如果您还需要该课程的代码,请告诉我。
提前谢谢。
答案 0 :(得分:0)
我认为你的逻辑有点困惑。您正在检查null,如果片段为null,则不执行任何操作。
您可以像这样简化: 首先检查fragment是否为null,如果是,则创建一个新实例 把参数放在if / else之外,这样你就确保每次都得到它们。 还要将您的字符串项放在变量中。
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
OngletNotes fragment = ((Onglets)getActivity()).getOngletNotes ();
if(fragment == null) {
fragment = OngletNotes.getInstance();
}
String item = adapterView.getItemAtPosition(i).toString();
//Put the value
Bundle args = new Bundle();
args.putString("Item",item);
fragment.setArguments(args);
getFragmentManager().beginTransaction().add(R.id.container, fragment).commit();
}