我正在尝试在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);