我正在尝试在onClick()中调用方法。 takeScreenShot()方法需要参数(活动活动)。我想要的屏幕快照是MainActivity.java。当我单击按钮时,我收到一个空指针。我知道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。我如何初始化它以及可以将其设置为=的选项是什么,以使其不为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;
}

最佳答案

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


您不初始化Activity。您需要向该方法发送对Activity的引用。因此,从您的Activity尝试

YourClassName.takeScreenShot(MainActivity.this);

10-06 14:56