Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
方法onCreate中的屏幕捕获在android中不起作用_Android - Fatal编程技术网

方法onCreate中的屏幕捕获在android中不起作用

方法onCreate中的屏幕捕获在android中不起作用,android,Android,我在一个android应用程序中工作,我想在重写的onCreate()方法中捕获当前活动的屏幕。当我在重写的onCreate()方法中编写捕获屏幕的代码时,位图返回null。但是,当我在同一活动中的按钮单击中调用相同的代码时,位图返回正确的值。请更正我的代码,使其在ocCreate()方法本身中按位图返回 我的代码是: View v1 = findViewById(R.id.printpreviewBaseScrollView); v1.setDrawingCacheEnabled(true);

我在一个android应用程序中工作,我想在重写的onCreate()方法中捕获当前活动的屏幕。当我在重写的onCreate()方法中编写捕获屏幕的代码时,位图返回null。但是,当我在同一活动中的按钮单击中调用相同的代码时,位图返回正确的值。请更正我的代码,使其在ocCreate()方法本身中按位图返回

我的代码是:

View v1 = findViewById(R.id.printpreviewBaseScrollView);
v1.setDrawingCacheEnabled(true);
Bitmap bmv = v1.getDrawingCache();

您必须在创建之前完成此操作。在onCreate期间,您的布局会被测量和膨胀,但您的UI尚未创建。请参阅活动生命周期文档:

我只是复制并粘贴了你的代码。您可能应该将v1设置为类级变量,在onCreate()中设置它的引用,然后在onStart()中获取位图。

Create方法调用 无效截图(){ 您的btimap代码 } 主动呼叫
截图()

根据android的文档

活动的可见生存期发生在调用 onStart()直到相应的onStop()调用。在此期间,用户可以在屏幕上看到活动,尽管它可能不在前台并与用户交互

从上图可以看出,当执行onCreate()时,它不在可见生存期内,因此无法获得屏幕截图

将代码移动到onResume(),它应该在可见生命周期内

,因为方法“onCreate()”表明此时将创建活动。因此,此时您不能进行屏幕截图。在“onResume()”中尝试您的代码:


很抱歉,在onResume()方法中,我仍然没有将位图设置为null。是否有其他方法可以执行此操作?抱歉,在onResume()方法中,我仍然没有将位图设置为null。是否有其他方法可以执行此操作?抱歉,在onStart()和onResume()方法中,我仍然没有将位图设置为null。还有其他方法吗?
@Override
public void onStart(){
     View v1 = findViewById(R.id.printpreviewBaseScrollView);
     v1.setDrawingCacheEnabled(true);
     Bitmap bmv = v1.getDrawingCache();
}
...
@Override
public void onResume(){
    View v1 = findViewById(R.id.printpreviewBaseScrollView);
    v1.setDrawingCacheEnabled(true);
    Bitmap bmv = v1.getDrawingCache();
}
...
View printlayout = findViewById(R.id.printpreviewBaseRelativeLayout);
        printlayout.setDrawingCacheEnabled(true);

        printlayout.measure(printlayout.getMeasuredWidth(),
                printlayout.getMeasuredHeight());

         printlayout.layout(0, 0, 700, 1755);



        Log.e("width", "" + printlayout.getMeasuredWidth());
        Log.e("hight", "" + printlayout.getMeasuredHeight());

        printlayout.buildDrawingCache(true);

        bitmap = Bitmap.createBitmap(printlayout.getDrawingCache());
        printlayout.setDrawingCacheEnabled(false); // clear drawing cache