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 должен быть методом деятельности, а не находиться на фрагменте. Другая проблема заключается в том, что вы не должны вызывать новую активность из фрагмента. Реализовать интерфейс для коммуникации, как описано по ссылке ниже

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

деятельности, которая держит ваш фрагмент должна быть ответственны для вызова новой деятельности и обработки результатов.

+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). он не работал –

+0

, какую ошибку вы получаете от вас, возможно, пропала какая-то вещь, такая же, как и у кода, который раньше использовался мною ... – koutuk

+0

Пожалуйста, поделитесь своим родительским классом – koutuk