2016-03-01 57 views
1

我的目标类是PlanetInfoActivity,但我总是收到默认值。我在这里看到了一些例子,他们遇到了同样的问题,但通常他们会构造一个新的意图或接收无效的类型。Android意图 - 目标类别上的默认值

public static class PlanetHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ 

    @Override 
    public void onClick(View v){ 
     Intent intent = new Intent(context, PlanetInfoActivity.class); 
     int i = mPlanet.getPlanetNumber(); <-- returns int 

     intent.putExtra(PLANET_NUMBER, i); 
     context.startActivity(intent); 
    } 
} 

PlanetInfoActivty

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.planet_info_ui); 

    Intent intData = getIntent(); 
    int planNum3 = intData.getIntExtra("PLANET_NUMBER", 101); 


    Toast.makeText(this, Integer.toString(planNum3), Toast.LENGTH_SHORT).show(); 




} 

}

+0

什么是'PLANET_NUMBER'的价值?因为在'PlanetHolder'中你使用了最终的静态(我猜),并且在你的活动中,你使用了文本“PLANET_HOLDER” – 0xDEADC0DE

+0

这是一个使用私有静态最终修饰符的字符串。 我怎样才能访问它? –

+0

它应该是最终的静态? –

回答

0

你总是得到默认值,因为你把INT比你得到一个不同的密钥。当你把int放入临时演员中时,你可以使用(可能是public static final)变量PLANET_NUMBER,而使用文本"PLANET_NUMBER"从临时演员中获取int。这些值不匹配。要获得您的PlanetInfoActivity中的int,您必须使用相同的密钥。要做到这一点,改变这一行

int planNum3 = intData.getIntExtra("PLANET_NUMBER", 101); 

这个

int planNum3 = intData.getIntExtra(PlanetHolder.PLANET_NUMBER, 101);