1

我的应用程序中有一个选项菜单,其中显示了用户在地图上添加的所有标记的列表。标记使用 ListView 表示,当用户选择该 ListView 的一项时,我想返回(恢复?)到主要活动,将标记位置作为参数传递,但不创建新活动。那可能吗?现在,当用户单击任何项​​目时,我正在创建一个新活动,是否可以简单地回到主要活动?

MarkersList 活动的代码:

mainListView.setOnItemClickListener(new OnItemClickListener()
{
    public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
    {
            Intent intent = new Intent(getBaseContext(), MainActivity.class);
        MyMarkerObj marker = (MyMarkerObj)table.get(position);
        intent.putExtra("position", marker.getId());
        startActivity(intent);
        finish();
    }
});

MainActivity 代码:

 @Override
protected void onResume() {  

    Intent intent = getIntent(); 
    if (intent != null) { 
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            int reportId = bundle.getInt("position");
            Toast.makeText(getApplicationContext(), Integer.toString(reportId), Toast.LENGTH_SHORT).show();
              try {
                data.open();
               } catch (Exception e) {
                    Log.i("hello", "hello");
               } 


            //Get the marker selected in the listview
            String position = data.getMarkerById(reportId);
            //System.out.println(">>>>>>>>>>>>>>> position = " + position); 
        }
    }
    super.onResume();
}
4

1 回答 1

2

使用StartActivityForResult(intent,reqcode)而不是startActivity(intent).

第一个活动中的第一个

Intent i=new Intent(MainActivity.this, MarkerActivity.class);
startActivityForResult(i,1);  <-- 1 is request code, you can give anything.

然后在第二个 Activity 的 ItemClick 上

 Intent intent = getIntent();
    MyMarkerObj marker = (MyMarkerObj)table.get(position);
    intent.putExtra("position", marker.getId());
   setResult(responsecode,intent);
    finish();

而在

第一个活动的 onActivityForResult

得到这样的值

 protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
     if(requestCode == 1 && resultCode == RESULT_OK)
        {

       Bundle bun=data.getExtras();
       int position= bun.getInt("position");     
        }
    }
于 2013-04-18T17:35:47.357 回答