Bundle extras返回null

时间:2011-08-03 17:09:42

标签: android android-activity bundle

我遇到了一些问题。

在“A”类中,我有代码:

Bundle extras = getIntent().getExtras();
    if ( extras == null ){
        Log.e("extras", "Extra NULL");
    }
    String arrayWatt = extras.getString("valoresWatt");
    String arrayHorario = extras.getString("valoresHorario");


Bundle extras = getIntent().getExtras();  --> this is returning NULL`

此方法抛出NUllPointerException。这里有什么问题?语法?

--- ---- EDIT 很抱歉,我忘记了这段代码:
(此代码来自另一个启动活动的类)

 Intent i = new Intent();
        i.setClassName("org.me.android",
                    "org.me.android.GraphViewDemo");
        i.putExtra("valoresWatt", watt);
        i.putExtra("valoresHorario", hora);
        startActivity(i);

4 个答案:

答案 0 :(得分:1)

如果你想得到额外的东西,这就是我要做的事情:

Intent i = getIntent();
String arrayWatt = i.getStringExtra("valoresWatt");
String arrayHorario = i.getStringExtra("valoresHorario");

答案 1 :(得分:1)

您列出的用于获取Extras的代码在哪里?你是否重写了onCreate方法?如果是这样,请务必在尝试使用super.onCreate(bundleVariableName)之前致电Extras。所以......

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myLayout);
    // ...
    Bundle data = getIntent().getExtras();
    if (data != null ) {
        // should actually verify that the key exists, so:
        // if (data.containsKey("valoresWatt")) {
        // ... do something with the value
        String watt = data.getString("valoresWatt");
        String horario = data.getString("valoresHorario");
    }
    // ...
}

答案 2 :(得分:1)

在原始代码中,您说第一行返回null:

Bundle extras = getIntent().getExtras();  // --> this is returning NULL

Android docs for Intent开始,如果尚未添加额外内容,则getExtras()方法似乎将返回null。

在这种情况下,您可能必须通过直接调用Intent对象上的.putExtra(key,value)来添加您的String附加内容,而不是在其尚未存在的附加地图上添加。

答案 3 :(得分:0)

对于NPE崩溃

Bundle extras = getIntent().getExtras();
if ( extras == null ){
    Log.e("extras", "Extra NULL");
} else {
   String arrayWatt = extras.getString("valoresWatt");
   String arrayHorario = extras.getString("valoresHorario");
}

而不是

i.putExtra("valoresWatt", watt);
i.putExtra("valoresHorario", hora);

i.putStringArrayListExtra("valoresWatt", watt);
i.putStringArrayListExtra("valoresHorario", hora);

如果它是字符串的arraylist。