当我使用菜单按钮切换到新页面并调用新活动时,我的应用程序崩溃了。我在一些应用程序中编写了相同的菜单按钮/ Activity,但从未遇到过问题。
我的应用程序中有以下类:
我已经测试了菜单按钮并重新打开了SplashActivity并且它工作正常,因此错误不在于菜单按钮并调用该功能。我还更改了AboutUs.java的内容除了导入和R.id.about_us xml之外什么都没有,但它仍然无效,这让我觉得页面中没有错误。
我的LogCat错误:
ERROR/AndroidRuntime(667):
ERROR: thread attach failed
08-04 12:07:13.039:
ERROR/AndroidRuntime(675):
ERROR: thread attach failed
08-04 12:07:19.119:
ERROR/gralloc(68): [unregister] handle 0x3ea8d8 still locked (state=40000001)
08-04 12:07:23.489:
ERROR/global(685): Deprecated Thread methods are not supported.
08-04 12:07:23.489:
ERROR/global(685): java.lang.UnsupportedOperationException
08-04 12:07:23.489:
ERROR/global(685): at java.lang.VMThread.stop(VMThread.java:85)
08-04 12:07:23.489:
ERROR/global(685): at java.lang.Thread.stop(Thread.java:1379)
08-04 12:07:23.489:
ERROR/global(685): at java.lang.Thread.stop(Thread.java:1344)
08-04 12:07:23.489:
ERROR/global(685): at com.peakmobiledesigns.kitchenunitconverter.SplashActivity$1.run(SplashActivity.java:28)
MainActivity中调用AboutUs.java的菜单java:
//menu starts here
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()){
case R.id.feedback:
final Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("plain/text");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]"peakmobiledesigns@gmail.com"});
startActivity(intent);
return true;
case R.id.about_us:
startActivity(new Intent("com.peakmobiledesigns.kitchenunitconverter.ABOUTUS"));
return true;
}
return false;
}
//menu ends here
这就是我在Android Manifest中为该活动列出的内容:
<activity android:name=".AboutUs" android:screenOrientation="portrait">
<intent-filter>
<action android:name="com.peakmobiledesigns.kitchenunitconverter.ABOUTUS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
以下是启动活动的Java:
package com.peakmobiledesigns.kitchenunitconverter;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
public class SplashActivity extends Activity {
protected int _splashTime = 2000;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread splashTread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while ((waited < _splashTime)) {
sleep(100);
waited += 100;
}
} catch (InterruptedException e) {
} finally {
finish();
startActivity(new Intent(getApplicationContext(),
KitchenConvertor.class));
stop();
}
}
};
splashTread.start();
}
}
答案 0 :(得分:2)
根据您发布的代码,您正在调用Thread.stop()
,这是一种弃用的方法,Android并未实现它。
在这种情况下,您根本不需要拨打stop
。当Thread
方法中的代码块完成时,run
将自行停止。移除对stop
的调用,您的例外将会消失。
如果确实需要在执行过程中停止Thread
,则应该使用interrupt
方法让线程知道它应该停止运行。您的Thread
代码需要调用isInterrupted
方法来了解是否停止运行。
答案 1 :(得分:0)
我发现了我的错误。在Android Manifest上,我已经将大量代码标识为应用程序支持之外的AboutUs页面。奇怪的是,经过几天的盯着代码,你终于看到了一个小小的错误。
感谢大家的帮助。