我正在创建一个从条形码读取初始任务的应用程序。下面是代码块和产生的错误
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { act=com.google.zxing.client.android.SCAN flg=0x80000 (has extras) }} to activity {com.example.knr/com.example.knr.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3351)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3394)
at android.app.ActivityThread.access$1300(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.knr.MainActivity.onActivityResult(MainActivity.java:84)
at android.app.Activity.dispatchActivityResult(Activity.java:5423)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3347)
一切正常,当我点击按钮时,我打开了条形码扫描仪,但是一旦我完成扫描,我就收到了这个错误。我试图启动一个 else,这样我就不会得到 null 异常,但它仍然保持不变。
主 fragment 的代码块
public class MainFragment extends Fragment {
public View onCreateView (LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_main, container, false);
Button button = (Button) view.findViewById(R.id.button);
Button scan1 = (Button) view.findViewById(R.id.Scan);
final EditText et = (EditText) view.findViewById(R.id.editText); // also serves //toinput code scanned from barcode scanner
scan1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Intent intent = new Intent("com.google.zxing.client.android.SCAN");
// getActivity().startActivityForResult(intent, 0);
IntentIntegrator scanIntegrator = new IntentIntegrator(getActivity());
scanIntegrator.initiateScan();
}
});
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
// do some stuff for another button click and check for conditions
}
});
return view
}
@Override
public void onActivityResult (int requestCode, int resultCode, Intent intent) {
//retrieve scan result
//super.onActivityResult(requestCode, resultCode, intent);
IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanningResult != null) {
//we have a result
String scanContent = scanningResult.getContents();
//contentTxt.setText("CONTENT: " + scanContent);
Toast toast = Toast.makeText(getActivity(),
scanContent, Toast.LENGTH_SHORT);
toast.show();
//et1.setText(scanContent);
}
else{
Toast toast = Toast.makeText(getActivity(),
"No scan data received!", Toast.LENGTH_SHORT);
toast.show();
}
}
}
最佳答案
您正在使用 fragment 并且在 onCreate 中使用 EditText 而不是在 fragment 的 onCreateView 中。稍后在 onActivityResult 中调用 et1.setText(barcont);然后你得到空值。
尝试:
public static class MainFragment extends Fragment {
EditText et1;
public MainFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_display_grup,
container, false);
et1 = (EditText) rootView.findViewById(R.id.editText);
return rootView;
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = intent.getStringExtra("SCAN_RESULT");
barcont=contents;
Log.d(TAG,barcont);
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
Log.d(TAG,format);
barfor=format;
}
else{
Toast toast = Toast.makeText(getActivity(),
"No data received!", Toast.LENGTH_SHORT);
toast.show();}
}
et1.setText(barcont);
}
}
此外,et1 应该是 Fragment 中的全局变量,而不是 Activity,您应该在 Fragment 中实现 onActivityResult。
关于android - java.lang.RuntimeException : Failure delivering result ResultInfo{who=null, 请求=0,结果=-1,数据= Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24413906/