安卓:仅使用中的onCreate getIntent()?(Android: using getIn

2019-07-17 11:33发布

在Android中(针对API的14-16)我有一个MainActivityNextActivity 。 存在使用意图启动不困难NextActivity从内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关键字)之外onCreate()

任何想法,为什么?

Answer 1:

你不能getIntent()之前onCreate() -有根本没有Intent可在该点。 我相信这同样适用于任何需要一个真实的Context

您的匿名内部类仍然可以调用getIntent()但是,这样你就不需要在所有声明这是一个变量。



Answer 2:

根据你的问题是什么我明白的是你不想要申报数据,最终在明年activity..ThenŸ不能ü尝试为this./

public class NextActivity extends Activity {
    int data=0;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         data = this.getIntent().getIntExtra("data", 7);
        ...
        }
    ...
    }

试试这个...



文章来源: Android: using getIntent() only within onCreate?