Android:仅在onCreate中使用getIntent()?

时间:2012-12-21 03:02:07

标签: android android-intent oncreate

在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启动时应用会崩溃。

知道为什么吗?

2 个答案:

答案 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);
        ...
        }
    ...
    }

试试这个......