在Android中(定位API 14-16)我有一个MainActivity
和一个NextActivity
。如果在NextActivity
的{{1}}块内调用MainActivity
方法,则使用意图从getIntent()
内启动onCreate()
是没有困难的:
NextActivity
但是,由于字段public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int data = 7;
...
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("data", data);
startActivity(intent);
}
}
public class NextActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final int data = this.getIntent().getIntExtra("data", 7);
...
}
...
}
正在data
中的匿名("内部")类中使用,因此我被迫声明NextActivity
。
我不想声明字段final
,如果我在课程开始时在final
开始之前声明它们,我通常可以避免这样做。但由于某些原因,如果在onCreate()
之外显示NextActivity
语句(没有getIntent()
关键字),则final
启动时应用会崩溃。
知道为什么吗?
答案 0 :(得分:10)
getIntent()
之前你不能onCreate()
- 那时根本没有Intent
可用。我相信任何需要Context
的内容都是如此。
但是,您的匿名内部类仍然可以调用getIntent()
,因此您根本不需要将其声明为变量。
答案 1 :(得分:1)
根据你的问题,我理解的是你不想在下一次活动中将数据声明为最终。然后你不能尝试这个./
public class NextActivity extends Activity {
int data=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
data = this.getIntent().getIntExtra("data", 7);
...
}
...
}
试试这个......