Android 未正确调用finish()
我有以下活动:Android 未正确调用finish(),android,android-activity,Android,Android Activity,我有以下活动: public class MyActivity extends Activity { String myString; @Override protected void onCreate(Bundle bundle) { super.onCreate(arg0); setContentView(R.layout.myLayout) getData(bund
public class MyActivity extends Activity {
String myString;
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(arg0);
setContentView(R.layout.myLayout)
getData(bundle);
doSmoethingWithMyString();
}
void getData(Bundle bundle) {
if(bundle != null) {
myString = bundle.getString("myString")
} else {
myString = getIntent().getStringExtra("myString")
}
if(myString == null)
finish();
}
void doSomethingWithMyString() {
// here the string should be used
}
}
如果myString为null,则应执行finish()并关闭活动。但是,尽管调用了finish(),doSomethingWithMyString()似乎在此之后执行,并引发一个NullPointerException。如果我将doSomethingWithMyString()注释掉,则该活动将正确关闭
知道怎么回事吗?完成()不会立即关闭您的活动。只有当控件返回到Android框架时,关闭序列才会启动。因此,onCreate中的所有剩余代码都将被执行,确保不会立即关闭活动。只有当控件返回到Android框架时,关闭序列才会启动。因此,onCreate中所有剩余的代码都将被执行,这肯定会解决您的问题。请参阅我的评论,了解这一点的原因
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(arg0);
setContentView(R.layout.myLayout)
getData(bundle);
if(!isFinishing()) {
doSmoethingWithMyString();
}
}
这应该能解决你的问题。请参阅我的评论,了解这一点的原因
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(arg0);
setContentView(R.layout.myLayout)
getData(bundle);
if(!isFinishing()) {
doSmoethingWithMyString();
}
}
我根本看不到在哪里调用了
doSomethingWithMyString()
。@特洛伊木马最有可能在onDestroy()
或setBaseData()
中finish()
可能不会立即停止活动。doSomethingWithMyString()是setBaseData():)复制和粘贴错误@iccthedral:难道没有一种方法可以让活动在活动结束后立即关闭,而不执行任何代码吗?用try{}catch{}块解决这个问题似乎不是最好的方法。我根本看不到调用doSomethingWithMyString()
的地方。@特洛伊木马程序很可能在onDestroy()或setBaseData()中finish()
可能不会立即停止活动。doSomethingWithMyString()是setBaseData():)复制和粘贴错误@iccthedral:难道没有一种方法可以让活动在活动结束后立即关闭,而不执行任何代码吗?用try{}catch{}块解决这个问题似乎不是最好的方法。。