我正在为android创建一个基于gps的应用程序,有两个活动main和locnames。main显示我的map和locnames是为了获得用户想要的源和目标。当用户从菜单中选择它时,我想启动locnames,用户在框中输入名称,我想将结果发送回main。但我有例外。
以下是我的main如何调用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 of 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的经验,但是文档中说它使用一个int和一个intent作为参数,所以我正在为此创建intent,但是在locnames的onclick中得到了nullpointerexception。
当做

最佳答案

您不需要特定组件的意图。你只需要一个空洞的意图。所以替换

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

具有
Intent intent = new Intent();

08-05 10:46