我现在有4个类index.java,catalog.java,menu.java,share.java.这四个类都继承的是Activity,现在我在这四个屏幕中都写有显示菜单的功能。
我想问一下,我这个显示菜单功能能单独提出来吗?如何提?
sample:
//跳转到share.java
void toShare(){
Intent intent = new Intent();
intent.setClass(index.this,share.class);
startActivity(intent);
this.finish();
}
这个函数也有个问题,每个屏幕名是不一样,我要是单独把这个函数提出来怎么获取setClass()里的index.this
我想问一下,我这个显示菜单功能能单独提出来吗?如何提?
sample:
//跳转到share.java
void toShare(){
Intent intent = new Intent();
intent.setClass(index.this,share.class);
startActivity(intent);
this.finish();
}
这个函数也有个问题,每个屏幕名是不一样,我要是单独把这个函数提出来怎么获取setClass()里的index.this
写一个abstract类BaseActivity继承Activity,在BaseActivity写个抽象方法showMenu(),
然后那几个屏幕的类都继承BaseActivity就ok了跳转的方法,你可以试试下面这个。假设是在BaseActivity实现。
BaseActivity
void toOther(Context c,Class<?> class){
Intent intent = new Intent();
intent.setClass(c,class);
startActivity(intent);
this.finish();
}在子类中调用
toOther(index.this,share.class);
abstract class common extends Activity {
/* 创建菜单*/
public boolean onCreateOptionsMenu(Menu menu){
menu.add(0, 1, 1, R.string.about).setIcon(R.drawable.menu);
menu.add(0, 2, 2, R.string.index).setIcon(R.drawable.menu);
menu.add(0, 3, 3, R.string.catalogue).setIcon(R.drawable.menu);
menu.add(0, 4, 4, R.string.share).setIcon(R.drawable.menu);
menu.add(0, 5, 5, R.string.exit2).setIcon(R.drawable.menu);
return true;
}
/* 处理menu的事件*/
public boolean onOptionsItemSelected(MenuItem item,Context c) {
int item_id = item.getItemId();
switch (item_id){
case 1:
toAbout(c);
break;
case 2:
toIndex(c);
break;
case 3:
toCatalogue(c);
break;
case 4:
toShare(c);
break;
case 5:
toExit();
break;
}
return true;
}
//目录
public void toCatalogue(Context c){
Intent intent = new Intent();
intent.setClass(c , catalogue.class);
startActivity(intent);
this.finish();
}
//分享
public void toShare(Context c){
Intent intent = new Intent();
intent.setClass(c, share.class);
startActivity(intent);
this.finish();
}
//关于
public void toAbout(Context c){
Intent intent = new Intent();
intent.setClass(c, about.class);
startActivity(intent);
this.finish();
}
//主页
public void toIndex(Context c){
Intent intent = new Intent();
intent.setClass(c, index.class);
startActivity(intent);
this.finish();
}
//退出
public void toExit(){
this.finish();
}
}
live.java
public class live extends common {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item, live.this);
}
}
可以了,感谢两位