活动视图未显示

时间:2013-11-01 06:38:48

标签: android android-activity

在我的应用程序中,我使用启动画面活动将可拖动文件保存为SD卡或内置内存中的文件。它运行良好,但此活动不显示内容视图。为什么此活动保存文件但不显示内容视图?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);

    for (int i = 0; i < DRAWABLES.length; i++) {
        saveDrawables(
                BitmapFactory.decodeResource(getResources(), DRAWABLES[i]),
                String.valueOf(i + 2));
    }

    startActivity(new Intent(SplashActivity.this, MotivateActivity.class));
    finish();

}

public void saveDrawables(Bitmap drawable, String drawableName) {

    try {
        String filename = drawableName + ".jpg";
        Log.i("Local filename:", "" + filename);

        File dir = new File(Environment.getExternalStorageDirectory()
                + "/MotivateMe/");
        File file = new File(dir, filename);

        if (!dir.exists()) {
            dir.mkdirs();
        }

        if (file.createNewFile()) {
            file.createNewFile();
        }

        FileOutputStream fileOutput = new FileOutputStream(file);
        drawable.compress(Bitmap.CompressFormat.JPEG, 100, fileOutput);
        fileOutput.close();
    } catch (Exception exception) {

    }

}

}

4 个答案:

答案 0 :(得分:2)

尝试按照此处的说明操作,否则可能会有所帮助:) 的 http://www.androidhive.info/2013/07/how-to-implement-android-splash-screen-2/

答案 1 :(得分:2)

代码在很多方面都是错误的......

但是为了简单起见,我们只是说你在错误的地方做工作(加载图片)。

我建议你阅读两件事。

1)Activity Lifecycle

2)Asynctask(你应该在那里做这项工作)。

答案 2 :(得分:0)

它不会显示您已保存的文件,因为在活动呈现布局之前,您已在onCreate()方法中启动了另一项活动。这就是为什么只运行保存图像的代码然后立即启动新活动。

答案 3 :(得分:-1)

修改onCreate代码,如下所示

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    final Handler handler=new Handler();
    new Thread(new Runnable() {

        @Override
        public void run() {
            for (int i = 0; i < DRAWABLES.length; i++) {
                saveDrawables(
                        BitmapFactory.decodeResource(getResources(), DRAWABLES[i]),
                        String.valueOf(i + 2));
            }
            handler.postDelayed(new Runnable() {

                @Override
                public void run() {
                     startActivity(new Intent(SplashActivity.this, MotivateActivity.class));
                        finish();
                }
            },1000);                
        }
    }).start();

}

由于您正在UI线程中执行操作,因此线程将挂起并且您将看不到启动屏幕。线程完成后,您将调用完成,因此您无法再看到启动屏幕。在上面的代码中,我创建了一个新线程来执行该任务,这意味着活动将正常加载。希望这能解决你的问题。