我正在尝试在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;
}
答案 0 :(得分:4)
我不明白如何声明和初始化
您没有初始化Activity
。您需要向此方法发送Activity
的引用。所以从Activity
尝试
YourClassName.takeScreenShot(MainActivity.this);
答案 1 :(得分:1)
onClick方法提供参数“view”:
onClick(View view)
你应该能够递归地调用“getParent”直到“parent”是一个instanceOf Activity。这假设onClick侦听器附加到您想要截屏的活动。