我有一个包含listview的片段,
ln -s /home/mysqk123/tmp/mysql.sock /var/lib/mysql/mysql.sock
mysql_secure_installation # Do your stuff
rm -rf /var/lib/mysql/mysql.sock
我想在选择时将数据从listiview传输到新片段。这是我的onItemClick
中的代码<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/containerMySubjects"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="15dp">
<ListView
android:id="@+id/lvSubjectLists"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
</LinearLayout>
这是我的新片段onCreateView
中的代码@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
InstructorFragmentSelectedSubject newFragment = new InstructorFragmentSelectedSubject();
Bundle args = new Bundle();
args.putString("code", code);
args.putString("title", title);
newFragment.setArguments(args);
getFragmentManager().beginTransaction().replace(R.id.containerMySubjects, newFragment).commit();
}
答案 0 :(得分:0)
尝试将LinearLayout更改为Frame Layout,看看会发生什么:) 我认为你的代码在listview下面添加片段,并且它有match_parent,所以它对用户是不可见的。
尽量避免使用子视图制作片段容器。最好使用listview创建新片段,然后添加到容器中。然后单击listitem替换视图。
// EDITED:
如果将listview更改为listview片段,则需要在片段之间进行通信。在listview中单击侦听器,您应该对活动进行回调,并且活动可以使用FragmentManager更改片段并将一些值放入新片段。
您可以在此处查看如何添加回调: https://developer.android.com/training/basics/fragments/communicating.html
答案 1 :(得分:0)
阅读Fragment Life Cycle尝试此代码。
private String code = null;
private String title = null;
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_instructor_selected_subject, container, false);
tvSelectedCode = (TextView) view.findViewById(R.id.tvSelectedCode);
tvSelectedTitle = (TextView) view.findViewById(R.id.tvSelectedTitle);
tvSelectedCode.setText(code);
tvSelectedTitle.setText(title);
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
code = getArguments().getString("code");
title = getArguments().getString("title");
}
}