我现在有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

解决方案 »

  1.   

    可以写一个类继承activity,添加一个显示菜单的功能,你的类继承这个类,再重写该方法
      

  2.   

    显示菜单好办
    写一个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);
      

  3.   

    common.java
    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);
        }
    }
    可以了,感谢两位