2011-04-28 83 views
0

嗨全部 我想從第一個(主要)活動中的第二個活動獲取值。爲此,我使用onActivityResult以第一性。它僅將第一次(主)活動從第二次活動返回到第一次活動。再次,我來到firstactivity以前的價值只顯示。onActivityResult適用於第一個問題

我的申請流程:

一線>二線>第一

第一(主)活動:

public class secondactivity extends Activity { 
    /** Called when the activity is first created. */ 
    CheckBox c1,c2; 
    TextView t; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.secondactivity); 
     c1=(CheckBox)findViewById(R.id.checkBox1); 
     c2=(CheckBox)findViewById(R.id.checkBox2); 

    c1.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View view) 
     { 
      c1.setChecked(true); 
      Bundle bundle = new Bundle(); 
      bundle.putString("key1",String.valueOf(c1.getText())); 
      Intent myIntent = new Intent(view.getContext(), main.class); 
      myIntent.putExtras(bundle); 
      setResult(RESULT_OK, myIntent); 
      finish(); 

     } 

    }); 
    c2.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View view) 
     { 
      c2.setChecked(true); 
      Bundle bundle = new Bundle(); 
      bundle.putString("key1",String.valueOf(c1.getText())); 
      Intent myIntent = new Intent(view.getContext(), main.class); 
      myIntent.putExtras(bundle); 
      setResult(RESULT_OK, myIntent); 
      finish();    
     } 

    }); 

} 
} 

請幫助我:

public class main extends Activity { 
    /** Called when the activity is first created. */ 
    LinearLayout l2; 
    TextView tv2; 
    String check=null; 
// static int value=0; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     l2 = (LinearLayout)findViewById(R.id.linearLayout2); 
     tv2=(TextView)findViewById(R.id.textView2); 


    l2.setClickable(true); 

    l2.setOnClickListener(new View.OnClickListener() 
    { 
     public void onClick(View view) 
     { 
      Intent myIntent = new Intent(view.getContext(), secondactivity.class); 
      startActivityForResult(myIntent, 0); 
     } 

    }); 

} 

@Override 
public void onActivityResult(int reqCode, int resCode, Intent data) 
{ 
    Log.e("runapp1","onActivityResult"); 
    Bundle bundle = data.getExtras(); 
    check = bundle != null ? bundle.getString("key1") : ""; 
    Log.e("runapp1","onActivityResult value "+check); 
    tv2.setText(check); 
}  
} 
在第二個活動

+1

你實際上正在完成你的'onCreate'方法中的第二個活動嗎?什麼是'c1'?它的價值是否在每次訪問第二項活動時都發生變化?你能分享一下佈局嗎?謝謝。 – rekaszeru 2011-04-28 07:58:17

+0

c1表示複選框c1。第二項活動是完成。 – 2011-04-28 08:06:09

+0

如果您立即使用其onCreate方法完成第二項活動,您如何期望其視圖中複選框的文本發生改變?如果它沒有改變,相同的文本將會通過意圖的額外一遍又一遍傳遞,所以你在第一個活動的'onActivityResult'中沒有相同的值。 – rekaszeru 2011-04-28 08:12:01

回答

0

您需要執行以下操作,具體取決於您想要捕獲複選框的值。

c1.setOnCheckedChangeListener(new OnCheckedChangeListener() 
{ 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
    { 
     if (c1.isChecked()) 
     { 
      Bundle bundle = new Bundle(); 
      bundle.putString("key1",String.valueOf(c1.getText())); 
      Intent myIntent = new Intent(); 
      myIntent.putExtras(bundle); 
      setResult(RESULT_OK, myIntent); 
      finish(); 
     } 
    } 
}); 
+0

謝謝Rajath DSouza,它的工作原理 – 2011-04-28 10:13:48

相關問題