2012-10-26 7 views
1

내 프로젝트에서 연락처 화면을 표시합니다. 연락처를 클릭하면 선택한 연락처를 표시해야하는 더미 화면으로 돌아갑니다.OnActivityResult는 항상 null을 반환합니다. Android에서 의도 데이터

이제는 문제가 있습니다. 내 프로젝트 연락처 목록에서 클릭하고 연락처를 선택하면 항상 내 더미 프로젝트 화면이 나타나지만 데이터는 항상 null로 나타납니다. null이 왜 제공되는지 알 수 없습니다. 연락처 화면을 보여주는 프로젝트에서 우리는 많은 경로를 따랐습니다.

Intent intent = new Intent(); 

intent.putExtra("chaton_buddy_number", buddy.getNo()); 
intent.putExtra("chaton_buddy_name", buddy.getName()); 

getActivity().setResult(Activity.RESULT_OK, intent); 

getActivity().finish(); 
return true; 

및 dummyApplication에서 :

1 HomeActivity-> TabActivity-> HomeTabFragment-> BuddyFragment ( 의 연락처 스크린 표시) 버디 프래그먼트

에는 다음 코드를 작성 나는 다음과 같은 코드를 작성했다.

public class MainActivity extends Activity { 
TextView tv; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
tv = (TextView)findViewById(R.id.textView1); 
Button button =(Button)findViewById(R.id.button1); 
button.setOnClickListener(new Button.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
       Intent intent = new Intent(); 
       intent.setAction(Intent.ACTION_SEND); 
       intent.putExtra("mChatONBuddies", true); 

    //Launching HomeActivity of my project because that one is the first activity. 
    //intent.setComponent(new ComponentName("com.sec.myproject", "com.sec.chaton.HomeActivity")); 

      startActivityForResult(intent, 0); 
     } 
    }); 
} 

인텐 트 (데이터)는 항상 내 더미 프로젝트 화면에 표시됩니다.

나는 다음 일을 시도했지만 저를 도왔습니다. 그 사용되는 곳

  1. getParent().getAcitivity().setResult(Activity_ResultOK, intent)
  2. Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP을 제거 부르심. 그것도 작동하지 않습니다

다른 제안은 매우 감사드립니다. 그런 다음 데이터를 처리하고 전달하는 인터페이스를 사용하는 것이 당신의 조각이 포함 된 활동에 다시 데이터를 전달해야합니다 같은 콜백

을 할 때

+0

BuddyFragment의 활동의 매니페스트도 singletop가 않습니다를 구현했다? onActivityResult는 Buddyfragment를 종료 한 후 즉시 반환합니까? – nandeesh

+0

실제로 buddyfragment는 tabActivity를 통해 실행되는 안드로이드 조각입니다 ... tabActivity에서 SINGLE_TOP을 설정했지만 제거했지만 여전히 작동하지 않습니다 ... –

답변

0

나는 인터페이스의 팬입니다. 당신의 조각에

1 단계

선언 다음 인터페이스는

public interface iContactHelper { 
    public void onSelectContact(String contactNumber,String contactName); 
} 

2 단계

선언 당신의 조각에 때라도. 3 단계

당신이 컨테이너 활동에 연락처 정보를 보낼 필요가

iContactHelper icontactHelper; 

@Override 
public void onAttach(Activity a) { 
    super.onAttach(a); 
    icontactHelper = (icontactHelper) a; 
} 

, 호출은 다음과 같습니다.

iContactHelper.onSelectContact(buddy.getNo(),buddy.getName()); 

4 단계

마지막으로 컨테이너 활동은 iContactHelper 인터페이스

@Override 
public void onSelectContact(String contactNumber,String contactName) { 
    Log.d("LOG","Contact Name " + contactName); 
    Log.d("LOG","Contact Number " + contactNumber); 
} 
+1

당신이 그것을 전달하려고 시도하는 것을 이해할 수 없었습니다 ... 할 수 있습니까? ellobrat more –

관련 문제