2014-01-27 92 views
0

我正试图在onClick()中调用一个方法。方法takeScreenShot()需要参数(Activity活动)。我想要的截图的活动是MainActivity.java。当我点击按钮时,我收到一个空指针。我知道活动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。如果我像这样离开它,它是空的。我如何初始化它,以及我可以设置它的选项=以使其不为空。

这里是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; 
} 

回答

4

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

你不初始化Activity。您需要发送对此方法的参考Activity。所以从您的Activity尝试

YourClassName.takeScreenShot(MainActivity.this); 
1

的onclick方法提供了参数“观点”:

onClick(View view) 

你应该能够得到所谓的“的getParent”递归直到“父”是一个instanceof活动。假设onClick侦听器已附加到您想要截图的活动。