2011-12-21 70 views
8

Tôi đang sử dụng hàm OnActivityResult đơn giản, nhưng nó không trả về kết quả mong muốn.OnActivityResult không hoạt động (Android)

Vui lòng xem mã của tôi và cho tôi biết nơi tôi đang làm sai.

public void OnClickFunction(View view) 
{ 
    Intent intent = new Intent(getApplicationContext(), Second.class); 
    startActivityForResult(intent, RESULT_OK); 

///  My actions. . . 
}  

Sau đó, trong lớp thứ hai, tôi đã thiết lập kết quả như thế này:

Button.setOnClickListener(new OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      ValueOne = EditText.getText().toString().trim(); 
      if (ValueOne.equals(String.valueOf(Answer))) 
      { 
       Toast.makeText(getApplicationContext(), "Correct Answer", 0).show(); 
       Second.this.setResult(RESULT_OK, null); 
       Second.this.finish(); 
      } 
      else 
      { 
       Toast.makeText(getApplicationContext(), "Wrong Answer", 0).show(); 
      } 
     } 
    });  

Bây giờ trở lại với các first.class, từ đó tiếp cận mục đích được gọi là:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    super.onActivityResult(requestCode, resultCode, data); 
//  if (requestCode == RESULT_OK) 
//  { 
     if (resultCode == RESULT_OK) 
     { 
          ///// MyActions. . . 
     } 
//  } 
}  

Trình gỡ rối không gỡ lỗi chức năng này, vì vậy kết quả mong muốn không đến.
Tôi đang làm sai ở đâu ??

+0

Bạn có chắc chắn hoạt động của bạn trong nhiệm vụ giống nhau không? Hãy xem: http://stackoverflow.com/questions/4013586/onactivityresult-does-not-works-in-android – Ash

+0

bạn có chắc chắn rằng điều kiện if là đúng và nó là bánh mì nướng hiển thị thông báo câu trả lời chính xác? và bạn cũng có thể sử dụng setResult (RESULT_OK) thay vì setResult (RESULT_OK, null); – Pratik

+0

Button.setOnClickListener ???? –

Trả lời

3

Bạn có để tiêu diệt các hoạt động thứ hai. Thử nhấn nút quay lại. Tôi có thể xem tất cả các tin nhắn đăng nhập onActivityResult

Hoạt động đầu tiên

public class FirstActivity extends Activity { 
/** Called when the activity is first created. */ 
int result = 100; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Intent i = new Intent(this,SecondActivity.class); 
    startActivityForResult(i, result); 
} 
@Override 
protected void onActivityResult (int requestCode, int resultCode, Intent data) { 
    Log.i("H", "RequestCode:" + requestCode); 
    Log.i("H", "ResultCode:" + resultCode); 
} 
} 

SecondActivity

public class SecondActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    setResult(RESULT_OK); 
    Log.i("S","Exiting Second Activity"); 
} 
} 
1

Nguồn Class:

int activity=1; 
Intent i=new Intent(Sourceclass.this,destination.class); 
startActivityForResult(i,activity); 

Trong lớp Destination:

Intent i=new Intent(); 
     setResult(RESULT_OK,i); 
    finish(); 

Trong OnActivityResult Nguồn Class:

public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (resultCode == RESULT_OK) 
    { 
        if(requestCode==1) 
      { 
       Log.e("check","check"); 

      } 
    } 

} 
+1

@Abhi ... không phải là người đàn ông đang làm việc .. – Noman

+0

bạn đã sử dụng mã của tôi vì nó là @Noman – Abhi

+2

@abhi .. vâng tôi đã chỉnh sửa mã của tôi theo câu trả lời của ur nhưng vẫn còn một hoạt động của bạn mở rộng" – Noman

Các vấn đề liên quan