我有以下活动:
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(),活动将正确关闭。
任何想法都错了?
答案 0 :(得分:2)
这应该可以解决您的问题。请参阅我的评论,了解其原因。
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(arg0);
setContentView(R.layout.myLayout)
getData(bundle);
if(!isFinishing()) {
doSmoethingWithMyString();
}
}
答案 1 :(得分:1)
finish()不会立即关闭您的活动。仅当控件返回到Android框架时才会启动关闭序列。因此,onCreate中剩余的所有代码都将被执行