如何模块化长码

时间:2013-08-14 02:01:01

标签: java android

我的MainActivity中有超过900行,因为我无法弄清楚如何让其他类工作。

它有效,但它使阅读变得困难和繁琐。

我将举例说明我想要分离到另一个类。

我想从主要活动中称之为。

MainActivity:

 public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.apm:
            apm();
            return true;
    }

}

public void apm() {

            AlertDialog levelDialog;
            final CharSequence[] items = {" Reboot ", " Reboot Recovery ", " Hot Reboot "};
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setTitle("What do you want to do?");
            builder.setCancelable(true);
            builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int item) {


                    switch (item) {
                        case 0:
                            rooted();
                            reboot();
                            break;
                        case 1:
                            rooted();
                            recovery();
                            break;
                        case 2:
                            rooted();
                            softreboot();
                            break;
                        //case 3:
                        //shutdown();
                        //break;
                    }
                }
            });
            levelDialog = builder.create();
            levelDialog.show();

}

2 个答案:

答案 0 :(得分:3)

在新文件Util.java中创建一个名为Util(例如)的新类。

在这堂课中:

public static void apm(MainActivity activity){
    //Put the code from your old apm method here.
    //Whenever you need to call a method that is part of MainActivity
    //just prepend activity. in front of the method call.
}

然后在MainActivity中,调用Util.apm(this);

编辑: 这里有更多细节。将以下内容放在Util.java中,并在MainActivity中调用Util.apm(this);

public static void apm(MainActivity activity) {
        AlertDialog levelDialog;
        final CharSequence[] items = {" Reboot ", " Reboot Recovery ", " Hot Reboot "};
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setTitle("What do you want to do?");
        builder.setCancelable(true);
        builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {


                switch (item) {
                    case 0:
                        activity.rooted();
                        activity.reboot();
                        break;
                    case 1:
                        activity.rooted();
                        activity.recovery();
                        break;
                    case 2:
                        activity.rooted();
                        activity.softreboot();
                        break;
                    //case 3:
                    //activity.shutdown();
                    //break;
                }
            }
        });
        levelDialog = builder.create();
        levelDialog.show();

}

答案 1 :(得分:1)

你可以在另一个类中编写你的apm方法。从mainActivity中,您可以实例化该类并将活动的上下文传递给类的构造函数。

然后从mainActivity,只需使用类实例调用该类的方法。

我希望你明白我想说的话。在新类中,您可以使用在构造函数中收到的上下文来访问mainActivity组件。