1 *MainActivity extends FragmentActivity
import com.example.fragment.DynamicFragment;
import com.example.fragment.HomeFragment;
import com.example.fragment.MessageFragment;
import com.example.fragment.PersonFragment;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;
/**
* 对fragment的切换,底部图标颜色的切换
* @author ansen
* @create time 2015-09-08
*/
/**
* 继承自FragmentActivity,这个死android:support-v4.jar包里面的一个类,可以兼容3.0以下版本使用Fragment
*/
public class MainActivity extends FragmentActivity {//注意:这里使用FragmentActivity
//要切换显示的四个Fragment
private HomeFragment homeFragment;
private DynamicFragment dynamicFragment;
private MessageFragment messageFragment;
private PersonFragment personFragment;
private int currentId = R.id.tv_main;// 当前选中id,默认是主页
private TextView tvMain, tvDynamic, tvMessage, tvPerson;//底部四个TextView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvMain = (TextView) findViewById(R.id.tv_main);
tvMain.setSelected(true);//首页默认选中 (一开进入页面的时候默认选中的)
tvDynamic = (TextView) findViewById(R.id.tv_dynamic);
tvMessage = (TextView) findViewById(R.id.tv_message);
tvPerson = (TextView ) findViewById(R.id.tv_person);
//默认加载首页(首页碎片)
homeFragment = new HomeFragment();
//add方法里面(参数1:FrameLayout id 2 添加的碎片) 记得commit
getSupportFragmentManager().beginTransaction().add(R.id.main_container,homeFragment).commit();
//4个TextView设置点击事件
tvMain.setOnClickListener(tabClickListener);
tvDynamic.setOnClickListener(tabClickListener);
tvMessage.setOnClickListener(tabClickListener);
tvPerson.setOnClickListener(tabClickListener);
//中间的那个图按钮设置点击监听
findViewById(R.id.iv_make).setOnClickListener(onClickListener);
}
/**
* 步骤
* 1.首先在onCreate方法设置布局文件,查找底部的4个TextView,给首页的TextView设置选择状态,并且默认加载首页的Fragment
* 最后给底部的TextView设置点击事件,还有中间的那个ImageView。
* 2,tabClickListener处理点击事件,跟上次点击的是否一致
* 如果一致不需要处理,
* 否则的话改变图标跟文字选中状态,还有Fragment的切换,并且把当前点击View的id设置成当前选中的id
* (这里分别调用了changeSelect(v.getId()
* changeFragment(v.getId()) (这里又调用hideFragment()方法)
* 和currentId = v.getId())
*
* 还有中间的那个ImageView设置个点击方法弹出个Toast方法就可以了
*/
private OnClickListener onClickListener=new OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_make:
Toast.makeText(MainActivity.this,"点击了制作按钮",Toast.LENGTH_SHORT).show();
break;
}
}
};
private OnClickListener tabClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() != currentId) {//如果当前选中跟上次选中的一样,不需要处理
changeSelect(v.getId());//改变图标跟文字颜色的选中
changeFragment(v.getId());//fragment的切换
currentId = v.getId();//设置选中id (这步很重要,记得要写)
}
}
};
/**