安卓帮助类

6

我有几个在我的安卓应用中的方法,我希望能够在多个活动中重复使用。因为这是一个Java辅助类,所以我没有从任何类继承。我有两个问题,第一个问题是如何将上下文传递到Java类中,第二个问题是如何在辅助类中使用从活动中扩展的方法。以下是我的辅助类:

Java类

public class ScreenHelper {
    Context context;
    public ScreenHelper(Context ctx) {
        this.context = ctx;
    }

    public int getStatusBarHeight(layout layout) {
        Rect r = new Rect();
        Window w = (Window) getWindow();
        w.getDecorView().getWindowVisibleDisplayFrame(r);
        return r.top;
    }

    public int getScreenHeight() {
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int ScreenHeight = metrics.heightPixels;
        return ScreenHeight;
    }

    public int getTitleBarHeight() {
        RelativeLayout relaLayout = (RelativeLayout) findViewById(R.id.title_bar);
        int titleHeight = relaLayout.getHeight();

        Log.d("Title Height","Title Height:" + titleHeight);
        return titleHeight;
    }
}

任何帮助都将不胜感激。
3个回答

7
第一个问题是如何将上下文传递到Java类中,您可以将其作为每个方法的参数进行传递。此外,为了更方便地访问,您可以将这些方法设置为final static。
第二个问题是如何在帮助程序类中使用从Activity继承的方法,这听起来像是应用程序逻辑设计不良的问题。从Activity类继承的方法应该仅从Activity子类中可见并使用。但是,如果您确实需要它,您也可以将Activity作为方法参数进行传递,但我建议您寻找另一种方法。
更新:如何将上下文作为每个方法的参数进行传递?以下是一个示例方法:
public static final void foo(Context c, int value, String message) {
   // do your stuff
}

这段代码需要与我需要使用的类扩展我的menuActivity,它又扩展了SherlockActivity,这不是一个好的设计吗? 我该如何以不同的方式处理?那么,如何将上下文作为每个方法的参数传递呢? 代码示例会非常有帮助。 - Paddy1990

2
为什么不使用抽象的BaseActivity包含所有这些方法?然后在所有其他Activities中扩展此类?

1
那么我该如何做呢?另外,如果我想在已经继承了其他类的类上使用这段代码,我该怎么做呢?谢谢。 - Paddy1990

0
为什么不能把activity和context引用传递给你的helper类并进行必要的操作呢?
这将确保您可以根据您的要求调用这两个对象上的所有方法。
同样的类也可以用于未来的开发。

不过,如果我和你分享的话,这并不能帮到你。真诚地说,我没有任何代码。因为你的需求是不同的。 - UVM
我就是想不通如何传递上下文并在Java类中使用从Activity继承的方法。 - Paddy1990

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接