2014-01-13 2 views
0

В моем приложении у меня есть MainActivity, в котором используются разные фрагменты. Один из этих фрагментов - это фрагмент детали, где я хочу захватить некоторые сериалы, сканируя QR-код. В настоящее время я пытаюсь использовать IntentIntegrator. Я могу проверить код успешно, но после этого мое приложение не возвращается правильно. Он просто отображает мою MainActivity, но нет Toast.Использование ZXing в Activity with Fragment не работает

Я также попытался поместить onActivityResult() во фрагмент и super.onActivityResult() в действия onActivityResult(), но это всегда такое же поведение. Он просто прыгает в MainActivity, и ничего больше не происходит.

Может ли кто-нибудь из вас возвестить мне, где я совершил ошибки? Я хочу отсканировать штрих-код и получить результаты в моем классе фрагментов.

Вот мой MainActivity Код:

public class MainActivity extends Activity { 
    private Button startenButton, ansehenButton, abmeldenButton; 
    private FrameLayout fragmentFrame; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     fragmentFrame = (FrameLayout) findViewById(R.id.frameLayout); 

     startenButton = (Button) findViewById(R.id.buttonPruefungStart); 
     startenButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
       if (fragmentFrame.getChildCount() < 1) { 
        transaction.add(R.id.frameLayout, new PruefungStartenFragment()); 
       } else { 
        transaction.replace(R.id.frameLayout, new PruefungStartenFragment()); 
       } 
       transaction.commit(); 
      } 
     }); 
    } 

    public void scan() { 
     IntentIntegrator integrator = new IntentIntegrator(this); 
     integrator.initiateScan(); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); 
     if (scanResult != null) { 
      Toast.makeText(this, scanResult.getContents(), Toast.LENGTH_LONG).show(); 
     } 
    } 

} 

А вот мой PruefungStartenFragment Код:

public class PruefungStartenFragment extends Fragment { 

    private TextView datum, ort, pruefer, bedienerdisplay, scanner, fingerprintscanner, quittungsdrucker, barcodeleser, 
      webcam, kundendisplay, terminal; 
    private Button scanButton, startButton; 

    public static PruefungStartenFragment newInstance(String code) { 
     Bundle args = new Bundle(); 
     args.putSerializable("code", code); 

     PruefungStartenFragment fragment = new PruefungStartenFragment(); 
     fragment.setArguments(args); 

     return fragment; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View v = inflater.inflate(R.layout.pruefung_starten_fragment, container, false); 
     scanButton = (Button) v.findViewById(R.id.buttonScan); 
     scanButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ((MainActivity)getActivity()).scan(); 
      } 
     }); 



     return v; 
    } 



} 

ответ

0

Я понял мою проблему ... В моем манифесте я имел android:noHistory="true" в моем MainActivity. Это предотвращает сканирование в сканере штрих-кода, чтобы передать результат в мою MainActivity, потому что в стеке нет активности, в которой он мог бы передавать результаты.