如题

解决方案 »

  1.   

    贴点你调用Activity和返回的代码看一下。
      

  2.   

    我的项目需要使用一个Tabhost控件,要求其达到的效果是,在一个Tab页里面可以实现Activity的调转,我从网上找到了一个demo ,现在地址是 Tongcard2.rar,其核心的代码是 public void switchActivity(String id,Intent intent)
    {
    try
    {
    Window window = getLocalActivityManager().startActivity(id, intent);
    View v = window.getDecorView();
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    LayoutParams param = new LayoutParams(LayoutParams.FILL_PARENT,
    LayoutParams.FILL_PARENT);
    v.setLayoutParams(param);

    containerFlipper.addView(v);
    containerFlipper.showNext();

    stack.push(id);

    }
    catch(Exception err)
    {
    err.printStackTrace();
    }


    }其中 containerFlipper 是布局上的 ViewFlipper 控件。
    下面是我启动新窗口和获取结果的代码//启动新窗体
    @Override
    public void onClick(View v) 
    {
    //添加新列表按钮
    if(v.getId()==R.id.btnAddMusicList)
    {
    //启动一个新的activity(Setting)
    Intent intent = new Intent();
    intent.setClass(MyMusicListActivity.this, AddNewMusicListActivity.class);
    //给新的activity(Setting)
    intent.putExtra("MusicListName", "");
    startActivityForResult(intent,AppConstant.ReturnCode_AddNewMusicListReturnCode);
    }
    }
    //获取返回结果,但是这段代码根本就没有执行
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
    if(resultCode==RESULT_OK)
    {
    String strName=data.getExtras().getString("strListName");
    if(!strName.equals(""))
    {
    myDb.insertData( strName);
    ShowMusicList();
    }
    }
    }
      

  3.   

    AppConstant.ReturnCode_AddNewMusicListReturnCode要大于零
      

  4.   

    是大于零的值,它的值是2,主要的问题是下面的代码public void switchActivity(String id,Intent intent) { try { Window window = getLocalActivityManager().startActivity(id, intent); View v = window.getDecorView(); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); LayoutParams param = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); v.setLayoutParams(param); containerFlipper.addView(v); containerFlipper.showNext(); stack.push(id); } catch(Exception err) { err.printStackTrace(); } } 如果这个类不再 Tabhost调用的或是有返回结果的 
      

  5.   

    是大于零的值,它的值是2,主要的问题是下面的代码public void switchActivity(String id,Intent intent)
    {
    try
    {
    Window window = getLocalActivityManager().startActivity(id, intent);
    View v = window.getDecorView();
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    LayoutParams param = new LayoutParams(LayoutParams.FILL_PARENT,
    LayoutParams.FILL_PARENT);
    v.setLayoutParams(param);

    containerFlipper.addView(v);
    containerFlipper.showNext();

    stack.push(id);

    }
    catch(Exception err)
    {
    err.printStackTrace();
    }
    //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

    }如果这个类不再 Tabhost调用的或是有返回结果的  
      

  6.   

    有什么log信息不?代码断断续续的!头大了!
      

  7.   

    需要把那个连接里面的代码下载下来,然后再里面 startActivityForResult 调用一个窗体,问题就出来了,就是父activity收不到返回值。
      

  8.   

    注意,startActivityFouResult方法是在跳转到子activity后,子activity 调用setResult后并且finish()销毁后才会执行主activity的onactivityresult,把值传入。手机输入,见谅
      

  9.   

    子 activity 已经finish()了
    代码是这么写的 //OK
    class BtnOKListListener implements OnClickListener
    {
    @Override
    public void onClick(View v)
    {
    String strListName=txtName.getText().toString();
    getIntent().putExtra("strListName",strListName);
    AddNewMusicListActivity.this.setResult(RESULT_OK, getIntent());
    finish();
    }
    }
      

  10.   

    已经finish()了。结束的代码如下 //OK
    class BtnOKListListener implements OnClickListener
    {
    @Override
    public void onClick(View v)
    {
    String strListName=txtName.getText().toString();
    getIntent().putExtra("strListName",strListName);
    AddNewMusicListActivity.this.setResult(RESULT_OK, getIntent());
    finish();
    }
    }
      

  11.   

    如果二者是在同一个类里用全局变量就比较好,在两个activity中的话没有办法传值
      

  12.   

    已经finish()了。结束的代码如下 //OK
    class BtnOKListListener implements OnClickListener
    {
    @Override
    public void onClick(View v)
    {
    String strListName=txtName.getText().toString();
    getIntent().putExtra("strListName",strListName);
    AddNewMusicListActivity.this.setResult(RESULT_OK, getIntent());
    finish();
    }
    }
      

  13.   

    注意,你的按钮事件中用的getIntent()获取的Intent.和下面的MusicActivity.this.set…根本不是同一个Intent,把上面的也改成MusicActivity.this.getIntent(),祝你好运,手机输入,见谅
      

  14.   

    AppConstant.ReturnCode_AddNewMusicListReturnCode要大于零
      

  15.   

    改了也不行,
    整个类的代码是这样package mars.mp3player;
    import mars.database.MyDataBaseAdapter;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;public class AddNewMusicListActivity extends BaseActivity 
    {
    private Button btnOk;
    private Button btnCancle;
    private EditText txtName;
    private Boolean isEdit;
           //全局变量保存intent
    private Intent intent;
    //数据库操作类
    private MyDataBaseAdapter myDb;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.addmusiclist);
    btnOk=(Button)findViewById(R.id.btnOk_AddMusicList);
    btnCancle=(Button)findViewById(R.id.btnCancle_AddMusicList);
    txtName=(EditText)findViewById(R.id.txtName_AddMusicList);
    btnOk.setOnClickListener(new BtnOKListListener());
    btnCancle.setOnClickListener(new BtnCancleMusicListener());
    myDb =new MyDataBaseAdapter(AddNewMusicListActivity.this);
    myDb.open();
    //获取前一个activity(StartAntherActivity)传过来的数据
    intent=getIntent();
    if(intent !=null)
    {
    Bundle bd = intent.getExtras();
    String strListName = bd.getString("MusicListName");
    isEdit=false;
    if(!strListName.equals(""))
    {
    txtName.setText(strListName);
    isEdit=true;
    }
    }
    }
    @Override
    protected void onDestroy() {
    // TODO Auto-generated method stub
    if(myDb !=null)
    myDb.close();
    super.onDestroy();
    }
    //OK,返回结果 
    class BtnOKListListener implements OnClickListener
    {
    @Override
    public void onClick(View v)
    {
    String strListName=txtName.getText().toString();
    if(intent !=null)
    {
    intent.putExtra("strListName",strListName);
                AddNewMusicListActivity.this.setResult(RESULT_OK, intent);
    }

    AddNewMusicListActivity.this.finish();
    }
    }
    //Cancle
    class BtnCancleMusicListener implements OnClickListener
    {
    @Override
    public void onClick(View v)
    {
    finish();
    }
    }

    }
      

  16.   

    AppConstant.ReturnCode_AddNewMusicListReturnCode 的值是 2
      

  17.   

    新Activity不能是singleTask、singleInstance。
    剩下的跟平时一样。
      

  18.   

    是不是在项目清单文件里面 将activity里面加了 android:launchMode="singleInstance"
    如果是加了这句话,是看不到返回值的,因为在界面启动的时候就调用了一次返回操作,以后就不会再有返回值了
      

  19.   

    设置了目标BActivity为singleTask后,在AActivity中调用BActivity,
    例如
    Intent intent = new Intent(this, BActivity.class);
    startActivityForResult(intent, 1);
    结果先会调用到  AActivity中的onActivityResult,
    而在BActivity设置setResult(Activity.RESULT_OL)后,
    AActivity的onActivityResult不会接受到通知。解决方案:设置BActivity为singleTop.
      

  20.   


    设置了目标BActivity为singleTask后,在AActivity中调用BActivity,
    例如
    Intent intent = new Intent(this, BActivity.class);
    startActivityForResult(intent, 1);
    结果先会调用到 AActivity中的onActivityResult,
    而在BActivity设置setResult(Activity.RESULT_OL)后,
    AActivity的onActivityResult不会接受到通知。解决方案:设置BActivity为singleTop.[/Quote]
    那个activity的配置很正常,不像你们说的那样配置如下<activity android:name=".AddNewMusicListActivity" android:theme="@android:style/Theme.Dialog"/>
      

  21.   

    给个简单示例,希望对你有帮助
    A.java里面
    Intent intent = new Intent( A.this, B.class );
    startActivityForResult( intent, 1 ); protected void onActivityResult( int requestCode, int resultCode, Intent intent )
    {
    switch( requestCode )
    {
    case 1:
    String path = intent.getStringExtra( "result" );
    //do something
                    break;

    default :
    break;
    }
    }
    B.java里面 private OnClickListener btnListener = new Button.OnClickListener()
    {
    @Override
    public void onClick( View v )
    {
    Intent intent = new Intent();
    intent.putExtra( "result",
    "test1111" );
    B.this.setResult( 1, intent );
    B.this.finish();
    }
    };
      

  22.   

    这个问题还没有解决,但是帖子要结了,相同问题的另一个帖子没有人回复,http://topic.csdn.net/u/20110817/23/c1588e66-f454-49bd-9e7d-0526e4f24001.html
    接分的请进
      

  23.   

     我的用的  singleTask  结果就怎么也得不到值, 后来修改后 ,可以了 。