Android extra with intent始终为NULL

时间:2013-12-20 16:54:06

标签: android android-intent android-activity

出于某种原因,我无法从我的意图中检索我的捆绑附加功能。我正在添加我的额外内容以传递给我的新活动:

public void getMap(View view){

        Intent i = new Intent(this, BreweryYourTopBeers.class);
        Log.d("map" , e.beerBreweryId);
        i.putExtra("breweryID",  e.beerBreweryId);
        i.setClass(this, BreweryMap.class);

        startActivity(i);


    }

查看我的LOG我可以看到e.beerBreweryId在捆绑和发送之前确实有一个值。

但是当我进入下一堂课时,我不能从我的意图中检索额外的东西。我尝试使用以下方法检索值:

public class BreweryMap extends ActionbarMenu {

    BeerData e;
    String beerID;
    GoogleMap map;

    //get beer details from bundle
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_brewerymap);

        //get brewery data

        //get beer data
        Intent intent = getIntent();
        Bundle extras = intent.getExtras();
        String breweryID = extras.getString("brewreyID");


        map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map))
                .getMap();



        //todo: get brewery latt and long and add marker
        //construct url
        String url = "http://api.brewerydb.com/v2/brewery/"+ breweryID +"?key=myKey&format=json&withLocations=y";

        Log.d("map", url);
        //async task to get beer taste tag percents
        new myAsyncTask(this,map).execute(url);

}

当我在这里查看我的日志时,breweryID始终为NULL,我无法弄清楚原因。

3 个答案:

答案 0 :(得分:3)

那里有印刷错误

尝试从

更改此行
String breweryID = extras.getString("brewreyID");

String breweryID = extras.getString("breweryID");

答案 1 :(得分:3)

正如@Rick Royd Aban所说,你的代码中有一个拼写错误的交换e& r在一个字符串中。

这就是为什么你不应该直接使用字符串,而是做这样的事情:

public static final String EXTRA_BREWERY_ID = "brewery_id";
i.putExtra(EXTRA_BREWERY_ID,  e.beerBreweryId);
String breweryID = extras.getString(EXTRA_BREWERY_ID);

这样: 如果你打错了,你的代码就不会编译,比跟踪错误要好得多,它会让它更容易和维护。

答案 2 :(得分:0)

Intent intent = getIntent();  
String breweryID = intent.getStringExtra("brewreyID");