在 Android(针对 API 14-16)中,我有一个 MainActivity
和一个 NextActivity
。如果在 NextActivity
的 MainActivity
块内调用 getIntent()
方法,则使用 Intent 从 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
,如果我在类(class)开始时,在 onCreate()
开始之前声明它们,我通常可以避免这样做。但出于某种原因,如果 NextActivity
语句出现在 getIntent()
之外(没有 final
关键字),则应用程序会在 onCreate()
启动时崩溃。知道为什么吗?
最佳答案
您不能在 getIntent()
之前使用 onCreate()
—— 那时根本没有 Intent
可用。我相信任何需要 Context
的东西也是如此。
但是,您的匿名内部类仍然可以调用 getIntent()
,因此您根本不需要将其声明为变量。