I am trying to convert an Activity to a fragment as follows:
Activity
public class MainActivity extends AppCompatActivity {
private ZXingScannerView scannerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
}
public void scanBarcode(View view) {
scannerView = new ZXingScannerView(HomeActivity.this);
scannerView.setResultHandler(new ZXingScannerResultHandler());
setContentView(scannerView);
scannerView.startCamera();
}
private class ZXingScannerResultHandler implements ZXingScannerView.ResultHandler {
@Override
public void handleResult(Result result) {
String resultCode = result.getText();
Toast.makeText(HomeActivity.this, resultCode, Toast.LENGTH_LONG).show();
setContentView(R.layout.activity_home);
scannerView.stopCamera();
}
}
}
Fragment
public class MainFragment extends Fragment implements View.OnClickListener{
private ZXingScannerView scannerView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_warrant, container, false);
Button scanBar = (Button) view.findViewById(R.id.scan_barcode);
scanBar.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.scan_barcode:
scannerView = new ZXingScannerView(getActivity());
scannerView.setResultHandler(new ZXingScannerResultHandler());
// setContentView(scannerView);
scannerView.startCamera();
break;
}
}
class ZXingScannerResultHandler implements ZXingScannerView.ResultHandler {
@Override
public void handleResult(Result result) {
String resultCode = result.getText();
Toast.makeText(getActivity(), resultCode, Toast.LENGTH_LONG).show();
// setContentView(R.layout.activity_start);
scannerView.stopCamera();
}
}
}
warranty_fragment
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.kainet.barcode.MainActivity">
<Button
android:id="@+id/scan_barcode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Scan"/>
</RelativeLayout>
as you can see the buttonClick calls the scannerView and returns to the view when it has captured the barcode, and this is achieved using the setContentView. But it seems like fragments don't support setContentView. What is the alternative or how can I get this code to work?