Android SDK - Eclipse - 如何在多个类中使用某些代码

时间:2012-02-27 16:57:57

标签: java android sdk

我是Java(Eclipse)的新手,我想知道是否有任何方法可以使用某些代码创建文件并在类中调用它。 因为我有很多不同的类用于不同的结果,但是有一些代码不会从一个变为另一个(例如菜单),我想在我必须调整代码时更加实用,而不需要更改类按班级。 有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

我在我的项目中完成了这个,我调用了Helper类。我从GoogleIO应用程序源代码中得到了这个想法。他们有一个名为ActivityHelper的类。它完全符合您所说的内容,将在一个地方反复使用的代码放在一起。这是我的MenuHelper类作为示例。我的菜单对于我的很多活动都是一样的,所以这样做是有意义的......

public class MenuHelper {

    public static void build(Menu menu) {
        menu.add(Menu.NONE, Key.Activity.LOGOUT, 0, R.string.label_logout)
                .setIcon(android.R.drawable.ic_menu_close_clear_cancel);
        menu.add(Menu.NONE, Key.Activity.FEEDBACK, 0,
                com.bytebenderapps.dbitly.R.string.label_feedback).setIcon(
                android.R.drawable.ic_menu_send);
    }

    public static boolean onMenuItemSelected(int featureId, MenuItem item,
            Context context) {
        switch (item.getItemId()) {
        case Key.Activity.LOGOUT:

            removeCredentials(context);
            startLoginActiviy(context);

            break;
        case Key.Activity.FEEDBACK:

            startFeedbackActivity(context);

            break;
        }

        return true;
    }

    private static void startLoginActiviy(Context context) {
        Intent intent = new Intent(context, LoginActivity.class);

        context.startActivity(intent);
    }

    private static void removeCredentials(Context context) {
        Editor editor = PreferenceManager.getDefaultSharedPreferences(context)
                .edit();

        editor.clear();
        editor.commit();
    }

    public static void toggleLogoff(Menu menu, boolean userLoggedIn) {
        MenuItem item = menu.findItem(Key.Activity.LOGOUT);

        item.setEnabled(userLoggedIn);
    }

    private static void startFeedbackActivity(Context context) {
        context.startActivity(new Intent(context, FeedbackActivity.class));
    }
}

然后在我的一个活动中实施

public class MyActivity {

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuHelper.build(menu);

        return true;
    }

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        super.onMenuItemSelected(featureId, item);

        return MenuHelper.onMenuItemSelected(featureId, item, this);
    }

}

答案 1 :(得分:1)

如果您发布一些代码或者让我们更好地了解您想要达到的目标以及您当前的方法,它将帮助我们解决您的疑虑。

一般的答案是,您可以而且应该将您的代码分开到不同的类中,但是根据具体情况,有不同的方法可以应用

无论如何this post/thread对你有用。