0

我有這個片段,它使用結果的開始活動調用一個活動。這項活動應該顯示鎖定模式。問題在於'onActivityResult'永遠不會被調用。我把一些敬酒檢查,但它永遠不會被打印。onActivityResult沒有從片段調用

public class int_Create_Pattern extends Fragment { 
    private static final int REQ_CREATE_PATTERN = 1; 

    @Override 
    public void onStart() { 
     // TODO Auto-generated method stub 

     super.onStart(); 
     LockPatternView.MATRIX_WIDTH = 4; 
     Intent intent = new Intent(LockPatternActivity.ACTION_CREATE_PATTERN, 
       null, getActivity().getBaseContext(), LockPatternActivity.class); 
     startActivityForResult(intent, REQ_CREATE_PATTERN); 
    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(resultCode, resultCode, data); 

     switch (requestCode) { 
     case REQ_CREATE_PATTERN: { 
      if (resultCode == LockPatternActivity.RESULT_OK) { 
       char[] pattern = data 
         .getCharArrayExtra(LockPatternActivity.EXTRA_PATTERN); 
       DataBaseHandler handler = new DataBaseHandler(getActivity() 
         .getApplicationContext()); 
       handler.open(); 

       String PatternToWrite = new String(pattern); 
       handler.createPattern(PatternToWrite); 
       handler.close(); 
       Log.d("DEBUG", new String(pattern)); 

       Toast.makeText(getActivity().getApplicationContext(), 
         "Pattern Recorded", Toast.LENGTH_LONG).show(); 

      } 
      if (resultCode == LockPatternActivity.RESULT_CANCELED) { 

       Toast.makeText(getActivity().getApplicationContext(), 
         "Pattern Cancelled", Toast.LENGTH_LONG).show(); 
      } 
      break; 
     }// REQ_CREATE_PATTERN 

     } 

    } 

    } 
+2

http://stackoverflow.com/questions/6147884/onactivityresult-not-being-called-in-fragment –

回答

0

onActivityResult應該是一個Activity方法,而不是在一個Fragment上。 另一個問題是您不應該從片段調用新的活動。實現一個接口用於交際,通過鏈接波紋管

http://developer.android.com/training/basics/fragments/communicating.html

保存您的片段應該是調用新的活動,以及處理結果的RESPONSABLE活動描述。

+0

所以我應該只需要調用從片段另一個活動,然後再處理我該活動的所有信息? –

+0

否。在你的片段中,你應該告訴你的活動,它需要爲結果開始一個新的活動。您可以使用接口來完成此操作,如鏈接所述。 「onActivityResult」應該在第一個活動中。如果您想將結果傳遞給片段,可以實現在http://developer.android.com/training/basics/fragments/communicating.html#Deliver –

0
In Parent Class: do this code 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.dualPane); 
    fragment.onActivityResult(requestCode, resultCode, data); 
} 
In Child Class: 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //in fragment class callback 
} 
+0

中描述的代碼,我剛剛嘗試過[這裏](http://stackoverflow.com/questions/6147884/onactivityresult-not-being-called-in-fragment)。它does not工作 –

+0

你得到什麼錯誤可能會丟失一些相同的代碼我以前用了很多時間... – koutuk

+0

請分享你的父類 – koutuk

相關問題