【问题标题】:NullPointerException when i tried to get Extras in FragmentActivity当我尝试在 FragmentActivity 中获取 Extras 时出现 NullPointerException
【发布时间】:2012-08-24 23:00:08
【问题描述】:

我在 Activity 和 FragmentActivity 之间传递 extra 时遇到问题。

接下来的代码创建 Intent 以启动新的 Activity:

Intent fichaSerie = new Intent(getActivity(),ActividadSerie.class);
NotificacionSerie serie = (NotificacionSerie) adaptador.getItem(position);
fichaSerie.putExtra("serie", serie.getID());
getActivity().startActivity(fichaSerie);

当我试图在 Fragment Activity 中获取 Extras 时,我得到一个 NullPointerException:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.serie);
String extra = getIntent().getExtras().getString("serie") //NullPointerException
}

有人知道我在代码中犯了什么错误吗?

非常感谢大家。

【问题讨论】:

  • serie.getID() 返回什么类型?
  • serie.getID() 返回一个字符串
  • 异常在String extra = getIntent().getExtras().getString("serie") 行中自动生成,或者在其中一些调用中生成。可以贴一下异常的堆栈吗?

标签: android android-intent android-activity android-fragments


【解决方案1】:

感谢你们所有的帮助,我通过这个电话解决了我的问题:

getIntent().getStringExtra("serie")

我将此问题标记为已解决。

再次感谢你们。

【讨论】:

    【解决方案2】:

    首先,Java 区分大小写,因此.getID().getId() 不同。 如果您尝试获取对象的 ID,请使用 .getId()。这通常会返回一个Integer

    注意type,正如 Michal 所说的那样(字符串或整数或其他任何东西)

    Intent fichaSerie = new Intent(getApplicationContext(), ActividadSerie.class);
    NotificacionSerie serie = (NotificacionSerie) adaptador.getItem(position);
    fichaSerie.putExtra("serie", serie.getId()); //presuming this id is an Integer or long int ... You could change this to string if it is still usable then (serie.getId().toString())... but you have to get an intent with myIntent.getStringExtra(...), but I think you will not be doing this.
    startActivityForResult(fichaSerie, 0);
    

    从 ActividadSerie.java 获得额外的东西

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.serie);
    Intent myIntent = getIntent();
    String extra = myIntent.getStringExtra("serie"); //try diferent gets... getIntExtra(), getStringExtra()..
    }
    

    【讨论】:

    • 感谢您的回答,但 getID() 方法返回一个字符串链,因此我使用了 putString 方法
    • 然后在 ActividadSerie.java 中使用String extra = myIntent.getStringExtra("serie");
    • 我正在这样做,但我得到了一个 nullpointerException,因此我写了我的问题
    【解决方案3】:

    您被放入一个Integer 值并将其放入String 值中,以便它获得一个NullPointerException

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 1970-01-01
      • 2015-04-26
      • 2012-06-19
      • 1970-01-01
      • 2017-07-03
      相关资源
      最近更新 更多