2012-04-15 37 views
4

我正在为Android创建基于GPS的应用程序,并且有2个活动Main和LocNames。 Main显示我的地图,LocNames是获取用户想要的源和目的地。当用户从菜单中选择它时,我想启动LocNames,用户在框中输入名称,并且希望结果被发送回Main。但我这样做的例外。Android:使用意图来回传递数据setResults

这里是我的主要是如何调用LocNames:

public boolean onOptionsItemSelected(MenuItem item) 
{ 
    switch (item.getItemId()) 
    { 
     case R.id.showMyLocation: 
      showCurrentLocation(); 
      break; 
     case R.id.showRoute: 
      Intent getLocationsIntent = new Intent(Main.this, LocNames.class); 
      startActivityForResult(getLocationsIntent, 1); 
      break; 
    } 

下面是我想设置导致的onClick LocNames的:

public void onClick(View v) 
{ 
    // TODO Auto-generated method stub 
    source = sourceText.getText().toString(); 
    destination = destinationText.getText().toString();  
    Intent result = new Intent(LocNames.this, Main.class); 
    result.putExtra("src", source); 
    result.putExtra("dest", destination); 
    setResult(RESULT_OK, result); 
} 

但是当我尝试使用结果我的应用程序崩溃通过LocNames

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
if(requestCode == 1 && resultCode == RESULT_OK) 
    { 
     source = data.getStringExtra("src"); 
     destination = data.getStringExtra("destination");   
    } 
} 

我有没有现成的经验,使用setResults但确实返回cumentation说它需要一个int和一个intent作为参数,所以我创建了这个意图,但是我在LocNames的OnClick中得到了NullPointerException。

Regards

回答

7

您不需要特定组件的意图。你只需要一个空的意图。因此,与

Intent intent = new Intent(); 
+0

谢谢您的回复更换

Intent result = new Intent(LocNames.this, Main.class); 

。但是,我将如何捕获结果变量源和目的地。我在OnClick中设置了正确的方式吗? – Yogesh 2012-04-15 00:41:52

+0

正如我可以看到你从'EditText'中捕获它们......你是什么意思?试试吧。你的代码看起来没问题,所以它应该可以工作(除了你在'onCreate'中创建'Intent'的行,如答案中所述) – 207 2012-04-15 00:51:53

+0

谢谢。发现这个bug,我应该使用这个语法来获取返回值:source = data.getExtras()。getString(“src”); \t \t \t destination = data.getExtras()。getString(“dest”); – Yogesh 2012-04-15 00:54:54

相关问题