在我的应用程序中,我有MainActivity
,它使用不同的片段。其中一个片段是一种细节片段,我想通过扫描QR码捕获一些序列。目前,我正在尝试使用IntentIntegrator
。我能够成功扫描代码,但在那之后,我的应用程序无法正确返回。它只显示我的MainActivity,但没有Toast。
我还尝试在片段中放置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 :(得分:0)
我发现了我的问题......在我的清单中,我的MainActivity中有android:noHistory="true"
。这可以防止条形码扫描器中的扫描活动将结果传递给我的MainActivity,因为堆栈上没有活动,可以将结果传递给。