在ListActivity.class文件中
public class ListActivity extends AppCompatActivity {
private SuiPian suiPian;
private ShiPeiQi shiPeiQi;
private ArrayList<String>arrayList;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listactivity);
suiPian=SuiPian.getInstance();
arrayList=new ArrayList<>();
arrayList.add("第一个");
arrayList.add("第二个");
arrayList.add("第三个");
shiPeiQi=new ShiPeiQi(arrayList);
suiPian.setListAdapter(shiPeiQi);
FragmentUtils.add(getSupportFragmentManager(),suiPian,R.id.f1);
}
class ShiPeiQi extends BaseAdapter{
private ArrayList<String>arrayList;
public ShiPeiQi(ArrayList<String>arrayList) {
this.arrayList=arrayList;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView=new TextView(parent.getContext());
textView.setText(arrayList.get(position));
return textView;
}
}
}
在listactivity.xml文件中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/f1"
android:layout_width="200dp"
android:layout_height="match_parent">
</FrameLayout>
<FrameLayout
android:id="@+id/f2"
android:background="@color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
在SuiPian.java文件中
public class SuiPian extends ListFragment {
private static SuiPian suiPian;
private FirstFragment firstFragment;
private SecondFragment secondFragment;
private ThridFragment thridFragment;
public static SuiPian getInstance() {
if (suiPian == null) {
suiPian = new SuiPian();
}
return suiPian;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Log.d("SuiPian", "position:" + position);
switch (position) {
case 0:
if (FragmentUtils.findFragment(getFragmentManager(), SecondFragment.class) != null)
FragmentUtils.hide(secondFragment);
if (FragmentUtils.findFragment(getFragmentManager(), ThridFragment.class) != null)
FragmentUtils.hide(thridFragment);
if (FragmentUtils.findFragment(getFragmentManager(), FirstFragment.class) == null)
FragmentUtils.add(getFragmentManager(), firstFragment, R.id.f2);
else
FragmentUtils.show(firstFragment);
break;
case 1:
if (FragmentUtils.findFragment(getFragmentManager(), FirstFragment.class) != null)
FragmentUtils.hide(firstFragment);
if (FragmentUtils.findFragment(getFragmentManager(), ThridFragment.class) != null)
FragmentUtils.hide(thridFragment);
if (FragmentUtils.findFragment(getFragmentManager(), SecondFragment.class) == null)
FragmentUtils.add(getFragmentManager(), secondFragment, R.id.f2);
else
FragmentUtils.show(secondFragment);
break;
case 2:
if (FragmentUtils.findFragment(getFragmentManager(), SecondFragment.class) != null)
FragmentUtils.hide(secondFragment);
if (FragmentUtils.findFragment(getFragmentManager(), FirstFragment.class) != null)
FragmentUtils.hide(firstFragment);
if (FragmentUtils.findFragment(getFragmentManager(), ThridFragment.class) == null)
FragmentUtils.add(getFragmentManager(), thridFragment, R.id.f2);
else
FragmentUtils.show(thridFragment);
break;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.suipian, container, false);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
firstFragment = FirstFragment.getInstance();
secondFragment = SecondFragment.getInstance();
thridFragment = ThridFragment.getInstance();
}
@Override
public void onDestroyView() {
super.onDestroyView();
}
}
在suipian.xml文件中,这个文件里面有注意点
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"//必须要加一个ListView,并且id必须是@android:id/list
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
在FirstFragment.java文件中
public class FirstFragment extends Fragment {
private static FirstFragment firstFragment;
public static FirstFragment getInstance(){
if(firstFragment==null){
firstFragment=new FirstFragment();
}
return firstFragment;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.first,container,false);
return view;
}
}
另外一种写法,效果和上面的一样,只是改动了两个文件中的内容
在ListActivity.java文件中
public class ListActivity extends AppCompatActivity {
private SuiPian suiPian;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listactivity);
suiPian=SuiPian.getInstance();
FragmentUtils.add(getSupportFragmentManager(),suiPian,R.id.f1);
}
}
在SuiPian.java文件中
public class SuiPian extends ListFragment {
private static SuiPian suiPian;
private FirstFragment firstFragment;
private SecondFragment secondFragment;
private ThridFragment thridFragment;
private ShiPeiQi shiPeiQi;
private ArrayList<String>arrayList;
public static SuiPian getInstance() {
if (suiPian == null) {
suiPian = new SuiPian();
}
return suiPian;
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Log.d("SuiPian", "position:" + position);
switch (position) {
case 0:
if (FragmentUtils.findFragment(getFragmentManager(), SecondFragment.class) != null)
FragmentUtils.hide(secondFragment);
if (FragmentUtils.findFragment(getFragmentManager(), ThridFragment.class) != null)
FragmentUtils.hide(thridFragment);
if (FragmentUtils.findFragment(getFragmentManager(), FirstFragment.class) == null)
FragmentUtils.add(getFragmentManager(), firstFragment, R.id.f2);
else
FragmentUtils.show(firstFragment);
break;
case 1:
if (FragmentUtils.findFragment(getFragmentManager(), FirstFragment.class) != null)
FragmentUtils.hide(firstFragment);
if (FragmentUtils.findFragment(getFragmentManager(), ThridFragment.class) != null)
FragmentUtils.hide(thridFragment);
if (FragmentUtils.findFragment(getFragmentManager(), SecondFragment.class) == null)
FragmentUtils.add(getFragmentManager(), secondFragment, R.id.f2);
else
FragmentUtils.show(secondFragment);
break;
case 2:
if (FragmentUtils.findFragment(getFragmentManager(), SecondFragment.class) != null)
FragmentUtils.hide(secondFragment);
if (FragmentUtils.findFragment(getFragmentManager(), FirstFragment.class) != null)
FragmentUtils.hide(firstFragment);
if (FragmentUtils.findFragment(getFragmentManager(), ThridFragment.class) == null)
FragmentUtils.add(getFragmentManager(), thridFragment, R.id.f2);
else
FragmentUtils.show(thridFragment);
break;
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.suipian, container, false);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
firstFragment = FirstFragment.getInstance();
secondFragment = SecondFragment.getInstance();
thridFragment = ThridFragment.getInstance();
arrayList=new ArrayList<>();
arrayList.add("第一个");
arrayList.add("第二个");
arrayList.add("第三个");
shiPeiQi=new ShiPeiQi(arrayList);
setListAdapter(shiPeiQi);
FragmentUtils.add(getFragmentManager(),firstFragment,R.id.f2);
}
class ShiPeiQi extends BaseAdapter {
private ArrayList<String> arrayList;
public ShiPeiQi(ArrayList<String>arrayList) {
this.arrayList=arrayList;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView=new TextView(parent.getContext());
textView.setText(arrayList.get(position));
return textView;
}
}
}
网友评论