求帮忙看下,我想把一个类里面的方法抽出来,放在另一个类里面,然后这个类再调用,该怎么抽取啊。
太长,麻烦大家将就看下,我想把里面点击按钮切换页面的代码放到另一个类里面,然后这个MainActivity再调用这个类的方法,请问下该怎么写啊。
public class MainActivity extends Activity implements OnClickListener,SwipeRefreshLayout.OnRefreshListener {
private SwipeRefreshLayout refreshLayout;
private View title_gone;
private View title_index;
private TextView txt_title;
private FragmentManager fragmentManager;
private Fragment[] fragments;
private ImageView[] imageButtons;
private TextView[] textViews;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化布局元素
initViews();
//把fragment添加到事务中
addFragmentToTransaction();
//第一次启动时选中第0个tab
setTabSelection(0);
//下拉刷新
setRefresh();
}
//下拉刷新
private void setRefresh(){
refreshLayout=(SwipeRefreshLayout) findViewById(R.id.refresh_header);
}
@Override
public void onRefresh(){
}
//在这里获取到每个需要用到的控件的实例,并给它们设置好必要的点击事件。
private void initViews() {
title_gone=findViewById(R.id.title_gone);
title_index=findViewById(R.id.title_index);
txt_title=(TextView) findViewById(R.id.txt_title);
IndexFragment indexFragment=new IndexFragment();
MallFragment mallFragment=new MallFragment();
HealthFragment healthFragment=new HealthFragment();
MineFragment mineFragment=new MineFragment();
fragments=new Fragment[]{indexFragment,mallFragment,healthFragment,mineFragment};
ImageView indexImage = (ImageView) findViewById(R.id.tab_index_img);
ImageView mallImage = (ImageView) findViewById(R.id.tab_mall_img);
ImageView healthImage = (ImageView) findViewById(R.id.tab_health_img);
ImageView mineImage = (ImageView) findViewById(R.id.tab_mine_img);
imageButtons=new ImageView[]{indexImage,mallImage,healthImage,mineImage};
TextView indexText = (TextView) findViewById(R.id.tab_index_text);
TextView mallText = (TextView) findViewById(R.id.tab_mall_text);
TextView healthText = (TextView) findViewById(R.id.tab_health_text);
TextView mineText = (TextView) findViewById(R.id.tab_mine_text);
textViews=new TextView[]{indexText,mallText,healthText,mineText};
View indexLayout = findViewById(R.id.layout_index);
View mallLayout = findViewById(R.id.layout_mall);
View healthLayout = findViewById(R.id.layout_health);
View mineLayout = findViewById(R.id.layout_mine);
indexLayout.setOnClickListener(this);
mallLayout.setOnClickListener(this);
healthLayout.setOnClickListener(this);
mineLayout.setOnClickListener(this);
}
//把fragment添加到事务中.
public void addFragmentToTransaction(){
fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.add(R.id.content, fragments[0]);
transaction.add(R.id.content, fragments[1]);
transaction.add(R.id.content, fragments[2]);
transaction.add(R.id.content, fragments[3]);
transaction.commit();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.layout_index:
setTabSelection(0);
break;
case R.id.layout_mall:
setTabSelection(1);
break;
case R.id.layout_health:
setTabSelection(2);
break;
case R.id.layout_mine:
setTabSelection(3);
break;
default:
break;
}
}
//每个tab页对应的下标。0表示消息,1表示联系人,2表示动态,3表示设置。
private void setTabSelection(int index) {
//每次选中之前先清楚掉上次的选中状态
clearSelection();
//开启一个Fragment事务
FragmentTransaction transaction = fragmentManager.beginTransaction();
//先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况
hideFragments(transaction);
//显示顶部标题
title_gone.setVisibility(View.VISIBLE);
switch (index) {
case 0:
imageButtons[0].setImageResource(R.drawable.tab_index_a);
textViews[0].setTextColor(0xFF3498db);
txt_title.setVisibility(View.GONE);
title_index.setVisibility(View.VISIBLE);
transaction.show(fragments[0]);
break;
case 1:
imageButtons[1].setImageResource(R.drawable.tab_mall_a);
textViews[1].setTextColor(0xFF3498db);
txt_title.setText("商城");
txt_title.setVisibility(View.VISIBLE);
title_index.setVisibility(View.GONE);
transaction.show(fragments[1]);
break;
case 2:
imageButtons[2].setImageResource(R.drawable.tab_health_a);
textViews[2].setTextColor(0xFF3498db);
txt_title.setText("健康");
txt_title.setVisibility(View.VISIBLE);
title_index.setVisibility(View.GONE);
transaction.show(fragments[2]);
break;
case 3:
imageButtons[3].setImageResource(R.drawable.tab_mine_a);
textViews[3].setTextColor(0xFF3498db);
title_gone.setVisibility(View.GONE);
transaction.show(fragments[3]);
break;
}
transaction.commit();
}
//清除掉所有的选中状态。
private void clearSelection() {
for (int i=0;i<4;i++){
textViews[i].setTextColor(0xFF999999);
}
imageButtons[0].setImageResource(R.drawable.tab_index);
imageButtons[1].setImageResource(R.drawable.tab_mall);
imageButtons[2].setImageResource(R.drawable.tab_health);
imageButtons[3].setImageResource(R.drawable.tab_mine);
}
//将所有的Fragment都置为隐藏状态。
private void hideFragments(FragmentTransaction transaction) {
for(int i=0;i<4;i++){
transaction.hide(fragments[i]);
}
}
}
...全文
相关推荐
在一个类中调用另一个类的数据成员的方法-程序实现
C++中,一个类需要调用另外一个类的数据成员时,经常不知道怎么做,这里整理了两种方法,来实现在一个类中调用另外一个类的数据成员。
JAVA将一个数据中数据定时自动复制(抽取)到另一个数据库
用java中的线程控制程序从一个数据库中定时自动抽取数据到另一个数据库,实现数据库的同步。代码很详细。
Java中实现在一个方法中调用另一个方法
下面小编就为大家分享一篇Java中实现在一个方法中调用另一个方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
C#中在一个窗体里调用另一个窗体的方法
C#中在一个窗体里调用另一个窗体的方法;C#不同窗体方法调用
Python 从一个文件中调用另一个文件的类方法
如果是在同一个 module中(也就是同一个py文件里),直接用就可以 如果在不同的module里,例如 a.py里有 class A: b.py 里有 class B: 如果你要在class B里用class A 需要在 b.py的开头写上 from a import A 举个例子: 比如我在文件lingkingtables.py的文件中构造了三个类,在另一个文件中想要引用这三个类,那么用如下语句即可 from lingkingtables import Lnode from lingkingtables import Llist from lingkingtables import Li


