如何在Fragment
内显示字符串/文字,具体取决于我ListView
中点击的项目?
这就是ListView
在视觉上的样子---
当我点击Say Hello
时,我想要显示hello
,当我点击Say Bye
时,我想要显示再见...
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ViewPager vp = (ViewPager) findViewById(R.id.n_Viewpager);
this.addPages(vp);
}
//ADD ALL PAGES
private void addPages(ViewPager pager) {
MyFragPagerAdapter adapter = new MyFragPagerAdapter(getSupportFragmentManager());
adapter.addPage(new ContainerFragment());
//SET ADAPTER TO PAGER
pager.setAdapter(adapter);
}
}
TestFragment.java
public class TestFragment extends ListFragment {
//Setting the name of each event
String[] options = {"Say Hello", "Say Bye"};
ArrayAdapter<String> adapter;
//Inflating the view with the fragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
adapter = new ArrayAdapter<>(getActivity(), R.layout.listitem, R.id.textview, options);
setListAdapter(adapter);
return super.onCreateView(inflater, container, savedInstanceState);
}
//Click events
@Override
public void onStart() {
super.onStart();
getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View v, int pos, long l) {
switch (pos) {
case 0:
getParentFragment().getChildFragmentManager().beginTransaction().replace(R.id.fragment_container_root_view, new SaySomethingFragment()).addToBackStack("").commit();
break;
case 1:
break;
}
}
});
}
}
ContainerFragment.java
public class ContainerFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_container, container, false);
getChildFragmentManager().beginTransaction().replace(R.id.fragment_container_root_view, new TestFragment()).commit();
return view;
}
}
saysomething_fragment.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center_vertical"
android:id="@+id/speech_textview"
android:text="HELLLLOOO"
android:textSize="40dp" />
</LinearLayout>
答案 0 :(得分:1)
将new SaySomethingFragment()
移至单独的变量。
使用该实例的setArguments方法传递一个额外的字符串
在你的片段中,你可以使用getArguments()并获得额外的字符串