是否停止未恢复的活动?

时间:2014-12-03 19:37:03

标签: java android android-activity

我正在制作一个简单的Android应用程序,只是为了熟悉这个概念。我有一个有两个活动的应用程序,第一个应该只是一个显示一秒钟的闪屏,第二个是带有黑色方块的画布,当你点击它时会变成青色。当我运行它时,它会在日志中出现错误而停止,说明"停止未恢复的活动"。

主要活动:

package com.example.test;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends ActionBarActivity {

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

        try{
        Thread.sleep(1000);
        }catch(Exception e){}
        Intent in = new Intent(this, Afspl.class);
        startActivity(in);
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

下一个活动:

package com.example.test;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;

public class Afspl extends Activity {

    public DrawView vi;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        vi = new DrawView(this);
    }

    class DrawView extends View{
        Paint paint = new Paint();

        public DrawView(Context context){
            super(context);
        }

        public void onDraw(Canvas c){
            paint.setColor(col);
            c.drawRect(40, 40, 200, 200, paint);

        }

        private int col = Color.BLACK;

        public void setToColor(int c){
            col=c;
        }
    }

    public boolean onTouchEvent(MotionEvent me){
        if(me.getX()>=30 &&  me.getX() <= 320 && me.getY() >=30 && me.getY() <= 320)vi.setToColor(Color.CYAN);
        return super.onTouchEvent(me);
    }


}

您是否知道我为什么会收到此错误或其含义或我如何解决此错误?感谢所有帮助。

1 个答案:

答案 0 :(得分:2)

绝对使用:

try{
    Thread.sleep(1000);
}catch(Exception e){}
Intent in = new Intent(this, Afspl.class);
startActivity(in);

您可以尝试使用新的

new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent in = new Intent(getApplicationContext(), Afspl.class);
                startActivity(in);
            }
}, 1000);

你永远不应该让主线程睡觉。如果您以后想要做某事,请使用HandlerRunnable

此外,您应该在两个活动上声明一个视图,而不仅仅是第一个活动。创建一个视图并使用&#34; setContentView()&#34;设置它。在你的第二次活动。