2012-02-04 56 views
0

我有一个应用程序,我希望两个基于点击按钮的两个活动开始其中一个活动,然后从被调用的活动返回某些值。我知道我应该使用requestCode来检查活动。但无论哪种方式,该应用程序假定第一个活动被调用。这是我在主类中的部分代码。来自多个活动的返回值

public void onClick(View v) { 
    switch(v.getId()) 
    { 
    case R.id.start: 
     Intent i = new Intent(this, one.class); 
     startActivityForResult(i, FIRST_CODE); 
     break;  
    case R.id.qwe: 
     Intent j = new Intent(this, two.class); 
     startActivityForResult(j, SECOND_CODE); 
     break; 
    } 

,后来,

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if(requestCode==FIRST_CODE) 
    { 
     if(resultCode==RESULT_OK) 
     { 
      min = Integer.parseInt(data.getStringExtra("minutes")); 
      sec = Integer.parseInt(data.getStringExtra("seconds")); 
      test1.setText(min + ":" + sec); 
     } 
    } 
    else if(requestCode==SECOND_CODE) 
    { 
     if(resultCode==RESULT_OK) 
     { 
      runMin = Integer.parseInt(data.getStringExtra("minutes")); 
      runSec = Integer.parseInt(data.getStringExtra("seconds")); 
      test2.setText(runMin + ":" + sec); 
     } 
    } 
} 

在我的班级 '一' 和 '二',这是我的代码:

 min = (EditText)findViewById(R.id.smin); 
     sec = (EditText)findViewById(R.id.ssec);    
     String mtime, stime;   
     mtime = min.getText().toString(); 
     stime = sec.getText().toString(); 
     dat2 = new Intent(); 
     dat2.putExtra("minutes", mtime); 
     dat2.putExtra("seconds", stime); 
     setResult(RESULT_OK, dat2); 
     finish(); 

这两个类是相同的。那是错的吗?谢谢。 :)

+0

为什么你需要创建两种相同的活动?否则没有什么是错的。 – 2012-02-04 17:53:26

+0

我想从两个活动中获得两个不同的时间。它们基本相同,但我想将不同的结果存储在不同的变量中,以便稍后使用它们。 – 2012-02-05 08:47:33

+0

我认为你应该只创建一个活动,并且在该活动中通过布尔变量等条件区分时间。根据该变量状态,可以将结果存储在其他需要的变量中。 – 2012-02-05 18:29:12

回答

0

应用程序不假定第一个活动被调用。检查requestCode的值onActivityResult()通过记录它, 使用Log.d("TAG",requestCode);在onActivityResult()的第一行;
它会给你的信息abt哪些活动被称为(以什么请求代码)...

数据如何被放在意图的差异活动,以及如何处理它在这个活动是完全不同的事情...