最近做了一个仿 facebook 人人的android侧边栏程序现在我希望点击左边的 侧边目录 然后只会改变我右边的 fragment里面的内容请问如何实现
package com.example.slidingmenu.activity;import java.util.ArrayList;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import com.example.slidingmenu.R;
import com.example.slidingmenu.fragment.LeftFragment;
import com.example.slidingmenu.fragment.PageFragment2;
import com.example.slidingmenu.fragment.ViewPageFragment;
import com.example.slidingmenu.fragment.ViewPageFragment.MyPageChangeListener;
import com.example.slidingmenu.view.SlidingMenu;public class SlidingActivity extends FragmentActivity {
SlidingMenu mSlidingMenu;
LeftFragment leftFragment; ViewPageFragment viewPageFragment;
public static int a=0;
public static Context context;
public Activity ac;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.main);
init();
initListener(); } private void init() {
context=getApplicationContext();
mSlidingMenu = (SlidingMenu) findViewById(R.id.slidingMenu);
mSlidingMenu.setLeftView(getLayoutInflater().inflate(
R.layout.left_frame, null));
mSlidingMenu.setCenterView(getLayoutInflater().inflate(
R.layout.center_frame, null));
FragmentTransaction t = this.getSupportFragmentManager()
.beginTransaction();
leftFragment = new LeftFragment();
t.replace(R.id.left_frame, leftFragment);
viewPageFragment = new ViewPageFragment();
t.replace(R.id.center_frame, viewPageFragment);
t.commit();
} private void initListener() {
viewPageFragment.setMyPageChangeListener(new MyPageChangeListener() {
@Override
public void onPageSelected(int position) {
if(viewPageFragment.isFirst()){
mSlidingMenu.setCanSliding(true);
}else{
mSlidingMenu.setCanSliding(false);
}
}
});
}
public static void refresh()
{
Intent i = new Intent();
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClassName(SlidingActivity.context, "com.example.slidingmenu.activity.SlidingActivity");
SlidingActivity.context.startActivity(i);
ViewPageFragment.pagerItemList.clear();
}
public static void refresh1()
{
ViewPageFragment.pagerItemList = new ArrayList<Fragment>();
PageFragment2 page2 = new PageFragment2();
ViewPageFragment.pagerItemList.add(page2);
// Intent i = new Intent();
// i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// i.setClassName(SlidingActivity.context, "com.example.slidingmenu.activity.MapActivity");
// SlidingActivity.context.startActivity(i);
}
public void showLeft() {
mSlidingMenu.showLeftView();
}}
这个是我Activity的代码
package com.example.slidingmenu.fragment;import java.util.ArrayList;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;import com.example.slidingmenu.R;
import com.example.slidingmenu.activity.SlidingActivity;public class ViewPageFragment extends Fragment { private Button showLeft;
private MyAdapter mAdapter;
private ViewPager mPager;
public static ArrayList<Fragment> pagerItemList; public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View mView = inflater.inflate(R.layout.view_pager, null);
showLeft = (Button) mView.findViewById(R.id.showLeft);
mPager = (ViewPager) mView.findViewById(R.id.pager);
PageFragment1 page1 = new PageFragment1();
PageFragment2 page2 = new PageFragment2();
PageFragment3 page3 = new PageFragment3();
pagerItemList = new ArrayList<Fragment>();
pagerItemList.add(page3);
if(SlidingActivity.a==0)
{
pagerItemList.add(page1);
}
else if(SlidingActivity.a==2)
{
pagerItemList.add(page2);
}
//
mAdapter = new MyAdapter(getFragmentManager());
mPager.setAdapter(mAdapter);
mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override
public void onPageSelected(int position) { if (myPageChangeListener != null)
myPageChangeListener.onPageSelected(position);
} @Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
} @Override
public void onPageScrollStateChanged(int position) {
}
}); return mView;
} public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); showLeft.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
((SlidingActivity) getActivity()).showLeft();
}
});
} public boolean isFirst() {
if (mPager.getCurrentItem() == 0)
return true;
else
return false;
} public boolean isEnd() {
if (mPager.getCurrentItem() == pagerItemList.size() - 1)
return true;
else
return false;
} public class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
} @Override
public int getCount() {
return pagerItemList.size();
} @Override
public Fragment getItem(int position) { Fragment fragment = null;
if (position < pagerItemList.size())
fragment = pagerItemList.get(position);
else
fragment = pagerItemList.get(0); return fragment; }
} private MyPageChangeListener myPageChangeListener; public void setMyPageChangeListener(MyPageChangeListener l) { myPageChangeListener = l; } public interface MyPageChangeListener {
public void onPageSelected(int position);
}}
这个是侧边栏的代码
package com.example.slidingmenu.fragment;import java.util.ArrayList;import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;import com.example.slidingmenu.R;
import com.example.slidingmenu.activity.SlidingActivity;public class LeftFragment extends Fragment {
ListView listView;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.left, null);
if (container == null) {
return null;
}
listView = (ListView) view.findViewById(R.id.newlistview);
String[] item = new String[] {"HomePage", "News", "Web", "Map"};
ArrayAdapter<String> files = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1,item);
listView.setAdapter(files);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
if(position==2)
{
SlidingActivity.a=0;
ViewPageFragment.pagerItemList=new ArrayList<Fragment>();
SlidingActivity.refresh1();
}
if(position==1)
{
SlidingActivity.a=0;
ViewPageFragment.pagerItemList=new ArrayList<Fragment>();
SlidingActivity.refresh();
}
}
});
return view;
} public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}}
这个是左边目录的代码,然后单个的fragment对应一个XML。请各位大大指教
android
package com.example.slidingmenu.activity;import java.util.ArrayList;import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import com.example.slidingmenu.R;
import com.example.slidingmenu.fragment.LeftFragment;
import com.example.slidingmenu.fragment.PageFragment2;
import com.example.slidingmenu.fragment.ViewPageFragment;
import com.example.slidingmenu.fragment.ViewPageFragment.MyPageChangeListener;
import com.example.slidingmenu.view.SlidingMenu;public class SlidingActivity extends FragmentActivity {
SlidingMenu mSlidingMenu;
LeftFragment leftFragment; ViewPageFragment viewPageFragment;
public static int a=0;
public static Context context;
public Activity ac;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
setContentView(R.layout.main);
init();
initListener(); } private void init() {
context=getApplicationContext();
mSlidingMenu = (SlidingMenu) findViewById(R.id.slidingMenu);
mSlidingMenu.setLeftView(getLayoutInflater().inflate(
R.layout.left_frame, null));
mSlidingMenu.setCenterView(getLayoutInflater().inflate(
R.layout.center_frame, null));
FragmentTransaction t = this.getSupportFragmentManager()
.beginTransaction();
leftFragment = new LeftFragment();
t.replace(R.id.left_frame, leftFragment);
viewPageFragment = new ViewPageFragment();
t.replace(R.id.center_frame, viewPageFragment);
t.commit();
} private void initListener() {
viewPageFragment.setMyPageChangeListener(new MyPageChangeListener() {
@Override
public void onPageSelected(int position) {
if(viewPageFragment.isFirst()){
mSlidingMenu.setCanSliding(true);
}else{
mSlidingMenu.setCanSliding(false);
}
}
});
}
public static void refresh()
{
Intent i = new Intent();
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClassName(SlidingActivity.context, "com.example.slidingmenu.activity.SlidingActivity");
SlidingActivity.context.startActivity(i);
ViewPageFragment.pagerItemList.clear();
}
public static void refresh1()
{
ViewPageFragment.pagerItemList = new ArrayList<Fragment>();
PageFragment2 page2 = new PageFragment2();
ViewPageFragment.pagerItemList.add(page2);
// Intent i = new Intent();
// i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// i.setClassName(SlidingActivity.context, "com.example.slidingmenu.activity.MapActivity");
// SlidingActivity.context.startActivity(i);
}
public void showLeft() {
mSlidingMenu.showLeftView();
}}
这个是我Activity的代码
package com.example.slidingmenu.fragment;import java.util.ArrayList;import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;import com.example.slidingmenu.R;
import com.example.slidingmenu.activity.SlidingActivity;public class ViewPageFragment extends Fragment { private Button showLeft;
private MyAdapter mAdapter;
private ViewPager mPager;
public static ArrayList<Fragment> pagerItemList; public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View mView = inflater.inflate(R.layout.view_pager, null);
showLeft = (Button) mView.findViewById(R.id.showLeft);
mPager = (ViewPager) mView.findViewById(R.id.pager);
PageFragment1 page1 = new PageFragment1();
PageFragment2 page2 = new PageFragment2();
PageFragment3 page3 = new PageFragment3();
pagerItemList = new ArrayList<Fragment>();
pagerItemList.add(page3);
if(SlidingActivity.a==0)
{
pagerItemList.add(page1);
}
else if(SlidingActivity.a==2)
{
pagerItemList.add(page2);
}
//
mAdapter = new MyAdapter(getFragmentManager());
mPager.setAdapter(mAdapter);
mPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override
public void onPageSelected(int position) { if (myPageChangeListener != null)
myPageChangeListener.onPageSelected(position);
} @Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
} @Override
public void onPageScrollStateChanged(int position) {
}
}); return mView;
} public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); showLeft.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
((SlidingActivity) getActivity()).showLeft();
}
});
} public boolean isFirst() {
if (mPager.getCurrentItem() == 0)
return true;
else
return false;
} public boolean isEnd() {
if (mPager.getCurrentItem() == pagerItemList.size() - 1)
return true;
else
return false;
} public class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
} @Override
public int getCount() {
return pagerItemList.size();
} @Override
public Fragment getItem(int position) { Fragment fragment = null;
if (position < pagerItemList.size())
fragment = pagerItemList.get(position);
else
fragment = pagerItemList.get(0); return fragment; }
} private MyPageChangeListener myPageChangeListener; public void setMyPageChangeListener(MyPageChangeListener l) { myPageChangeListener = l; } public interface MyPageChangeListener {
public void onPageSelected(int position);
}}
这个是侧边栏的代码
package com.example.slidingmenu.fragment;import java.util.ArrayList;import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;import com.example.slidingmenu.R;
import com.example.slidingmenu.activity.SlidingActivity;public class LeftFragment extends Fragment {
ListView listView;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.left, null);
if (container == null) {
return null;
}
listView = (ListView) view.findViewById(R.id.newlistview);
String[] item = new String[] {"HomePage", "News", "Web", "Map"};
ArrayAdapter<String> files = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1,item);
listView.setAdapter(files);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
if(position==2)
{
SlidingActivity.a=0;
ViewPageFragment.pagerItemList=new ArrayList<Fragment>();
SlidingActivity.refresh1();
}
if(position==1)
{
SlidingActivity.a=0;
ViewPageFragment.pagerItemList=new ArrayList<Fragment>();
SlidingActivity.refresh();
}
}
});
return view;
} public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}}
这个是左边目录的代码,然后单个的fragment对应一个XML。请各位大大指教
android
解决方案 »
- android使用groguard混淆,如何将一个类里面所有的方法都保留?
- 用usb同时连接两台手机 adb出错
- 关于Android性能测试及老化原理的讨论
- 那位前辈有Mac系统下的Android SDK完整安装包或下载地址啊!
- 关于修改开机画面的问题
- Android 获取本应用CPU占用率
- 关于Future的使用
- 为什么使用android原生mediaplayer作为音乐播放器(在线),偶尔会出现无响应(ANR)?
- eclipse导入android项目报错 MainActivity 和values文件出错
- popupwindow+viewpager能够实现吗?
- Android app 会员系统,用什么数据库呢?SQLite 不能放到服务器把
- 电脑做服务器,手机端做客户。在模拟器上能连接,但安装到手机上就连接不上
还有这个人的这个程序貌似我之前有看过。
上面那个大哥能帮我看看就我的程序怎么改么
我觉得我现在程序框架都是对的 就是更改一下如何实现那个显示的功能
不好意思我是初学者 那个是系统自带需要导入的包么?》
http://user.qzone.qq.com/490630954?ADUIN=490630954&ADSESSION=1364862498&ADTAG=CLIENT.QQ.4087_MyInfo_PersonalInfo.0&ptlang=2052#!app=2&via=QZ.HashRefresh&pos=1361864791