2

我不明白为什么当我在模拟器中运行它时它会强制关闭。我做了一个启动画面,这没有问题,但它不会通过:

public class MainActivity extends Activity 
{
protected boolean _active = true;
protected int _splashTime = 5000;

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

    // thread for displaying the SplashScreen
    Thread splashTread = new Thread() 
    {
        @Override
        public void run() 
        {
            try 
            {
                int waited = 0;
                while(_active && (waited < _splashTime)) 
                {
                    sleep(100);
                    if(_active) 
                    {
                        waited += 100;
                    }
                }
            } 
            catch(InterruptedException e) 
            {
                // do nothing
            } 
            finally 
            {
                finish();
                startActivity(new Intent("com.example.textsmslock.EnableActivity"));
                stop();
            }
        }
    };
    splashTread.start();
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        _active = false;
    }
    return true;
}
}

在启动屏幕之后,它应该转到下面的另一个活动代码:

public class Enable extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enable);
   // getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_enable, menu);
    return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
    }
    return super.onOptionsItemSelected(item);
}
public void EnableYes(View view)
{
    startActivity(new Intent("com.example.textsmslock.EnterPin"));
}
public void EnableNo(View view)
{

}

}

红色 Logcats

11-17 21:04:53.504: E/Zygote(32): setreuid() failed. errno: 2
11-17 21:05:00.924: E/Zygote(32): setreuid() failed. errno: 17
11-17 21:05:02.074: E/BatteryService(58): usbOnlinePath not found
11-17 21:05:02.074: E/BatteryService(58): batteryVoltagePath not found
11-17 21:05:02.074: E/BatteryService(58): batteryTemperaturePath not found
11-17 21:05:02.094: E/SurfaceFlinger(58): Couldn't open /sys/power/wait_for_fb_sleep or /sys/power/wait_for_fb_wake
11-17 21:05:07.994: E/EventHub(58): could not get driver version for /dev/input/mouse0, Not a typewriter
11-17 21:05:07.994: E/EventHub(58): could not get driver version for /dev/input/mice, Not a typewriter
11-17 21:05:08.653: E/System(58): Failure starting core service
11-17 21:05:08.653: E/System(58): java.lang.SecurityException
11-17 21:05:08.653: E/System(58):   at android.os.BinderProxy.transact(Native Method)
11-17 21:05:08.653: E/System(58):   at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146)
11-17 21:05:08.653: E/System(58):   at android.os.ServiceManager.addService(ServiceManager.java:72)
11-17 21:05:08.653: E/System(58):   at com.android.server.ServerThread.run(SystemServer.java:184)
11-17 21:05:09.293: E/SoundPool(58): error loading /system/media/audio/ui/Effect_Tick.ogg
11-17 21:05:09.304: E/SoundPool(58): error loading /system/media/audio/ui/KeypressStandard.ogg
11-17 21:05:09.304: E/SoundPool(58): error loading /system/media/audio/ui/KeypressSpacebar.ogg
11-17 21:05:09.304: E/SoundPool(58): error loading /system/media/audio/ui/KeypressDelete.ogg
11-17 21:05:09.304: E/SoundPool(58): error loading /system/media/audio/ui/KeypressReturn.ogg
11-17 21:05:35.019: E/AndroidRuntime(272): FATAL EXCEPTION: Thread-8
11-17 21:05:35.019: E/AndroidRuntime(272): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=this, com.example.textsmslock.Enable.class }
11-17 21:05:35.019: E/AndroidRuntime(272):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)
11-17 21:05:35.019: E/AndroidRuntime(272):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
11-17 21:05:35.019: E/AndroidRuntime(272):  at android.app.Activity.startActivityForResult(Activity.java:2817)
11-17 21:05:35.019: E/AndroidRuntime(272):  at android.app.Activity.startActivity(Activity.java:2923)
11-17 21:05:35.019: E/AndroidRuntime(272):  at com.example.textsmslock.MainActivity$1.run(MainActivity.java:45)

**end of logcat**
4

3 回答 3

0

没有堆栈跟踪很难说,但很可能没有调用 Activity EnableActivity。根据您的代码, Activity 被调用Enable

一种类型安全的方法是不使用字符串,而是使用startActivity(new Intent(this, com.example.textsmslock.Enable.class))

于 2012-11-18T01:59:29.690 回答
0

首先,我认为你开始第二个Activity错误。在你的MainActivity,你有这个:

startActivity(new Intent("com.example.textsmslock.EnableActivity"));

当你应该有这样的东西时:

startActivity(new Intent(this, Enable.class));

其次,这就是Enable清单中的样子。您实际上不必使用meta-data标签指示父活动:

<activity android:name="com.example.textsmslock.Enable"
    android:label="@string/title_activity_enable"></activity>

第三,当人们说“堆栈跟踪”时,您通常会在 Logcat 中看到以红色打印出来的内容。这意味着有一个Exception或一个错误抛出。

于 2012-11-18T02:32:40.790 回答
0

我的清单中缺少意图过滤器

<intent-filter>
            <action android:name="com.example.textsmslock.Enable" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
于 2012-11-18T23:06:27.760 回答