初始化null以外的Activity

时间:2014-01-27 02:12:42

标签: java android

我正在尝试在onClick()中调用方法。方法takeScreenShot()需要参数(Activity activity)。我希望屏幕截图的活动是MainActivity.java。当我单击按钮时,我收到一个nullpointer。我知道必须初始化Activity MainActivity,但除了将其设置为null之外,我不明白要使用什么。它表示此行上的活动为空:

View view2 = activity.getWindow().getDecorView();

在onClick()上调用它,如此

public void onClick(View view) {

            new Thread(new Runnable() {
                public void run() {

            Bitmap screenShot = takeScreenShot(MainActivity);
            String filename = "my_screenshot.png";
            savePic(screenShot, filename);  
                 }
            }).start();

        }

我不明白如何声明和初始化

 Activity MainActivity; 

在onClick中使用其值之外的值为null。如果我这样离开它就是null。我如何初始化它以及我可以设置它的选项=为了使它不为空。

这是takeScreenShot方法:

 public static Bitmap takeScreenShot(Activity activity)
{
    View view2 = activity.getWindow().getDecorView();
    view2.setDrawingCacheEnabled(true);
    view2.buildDrawingCache();
    Bitmap b1 = view2.getDrawingCache();
    Rect frame = new Rect();
    activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
    int statusBarHeight = frame.top;
    int width = activity.getWindowManager().getDefaultDisplay().getWidth();
    int height = activity.getWindowManager().getDefaultDisplay().getHeight();

    Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height  - statusBarHeight);
    view2.destroyDrawingCache();
    return b;
}

2 个答案:

答案 0 :(得分:4)

  

我不明白如何声明和初始化

您没有初始化Activity。您需要向此方法发送Activity的引用。所以从Activity尝试

YourClassName.takeScreenShot(MainActivity.this);

答案 1 :(得分:1)

onClick方法提供参数“view”:

onClick(View view)

你应该能够递归地调用“getParent”直到“parent”是一个instanceOf Activity。这假设onClick侦听器附加到您想要截屏的活动。