2016-03-01 16 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);