2017-05-10 42 views
0

我是初学者android ...从qr扫描器我正在扫描数据...代码正在工作 罚款suposse如果我扫描一些像abc字符串。 ..my应用程序崩溃......因为更少的性格......如何避免崩溃...如果我扫描下面的代码一些无效的字符串...谁能帮我...我的应用程序崩溃时,通过使用Qr扫描器扫描无效字符串

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 0) { 
     if (resultCode == Activity.RESULT_OK) { 
      String contents = data.getStringExtra("SCAN_RESULT"); 

      String Id = contents.substring(0, 10), 
        password = contents.substring(10, 14); 
      // formatTxt.setText("FORMAT: " + contents); 
      // contentTxt.setText("CONTENT: " + format); 

      Toast toast = Toast.makeText(getActivity(), "" + contents, Toast.LENGTH_LONG); 
      toast.show(); 
      setdetails(id.toString(), password.toString()); 



     } else if (resultCode == Activity.RESULT_CANCELED) { 
     // Handle cancel 
     Toast toast = Toast.makeText(getActivity(), " Cancelled", Toast.LENGTH_SHORT); 

     toast.show(); 

    } 

    } else 
     super.onActivityResult(requestCode, resultCode, data); 
} 

java.lang.RuntimeException:传递结果失败 ResultInfo {who = android:fragment:0,request = 0,result = -1,data = Intent {act = com.google.zxing.client.android.SCAN flg = 0x80000 (有额外的)}}给activity {co m.application}: java.lang.StringIndexOutOfBoundsException:length = 7; regionStart = 0; regionLength = 10

                  at android.app.ActivityThread.deliverResults(ActivityThread.java:3720) 
                      Caused by: java.lang.StringIndexOutOfBoundsException: length=7; regionStart=0; regionLength=10 
+0

发表你的异常和堆栈跟踪请 –

+0

你能看到编辑的代码吗?我发布了异常 – Kingraj

+0

添加try catch并显示消息给用户关于无效数据 –

回答

1

你需要确保字符串长度不小于14(你的情况) ,它太不为空 使用此代码:

//...some code ... 
String contents = data.getStringExtra("SCAN_RESULT"); 
if(contents!=null && contents.length() >= 14){ 
    String Id = contents.substring(0, 10), 
    password = contents.substring(10, 14); 
    // formatTxt.setText("FORMAT: " + contents); 
    // contentTxt.setText("CONTENT: " + format); 

    Toast toast = Toast.makeText(getActivity(), "" + contents, Toast.LENGTH_LONG); 
    toast.show(); 
    setdetails(id.toString(), password.toString()); 
}else{ 
    Toast toast = Toast.makeText(getActivity(), "Invalid Data", Toast.LENGTH_LONG); 
    toast.show(); 
} 
+0

以前...它的扫描显示结果..for 14字符串.. ..现在如果我把上面的代码...其根本没有扫描结果 – Kingraj

+0

它的工作终于... thaq这么多 – Kingraj

0

你能只需告诉错误日志中显示的错误是什么,您正在使用哪种扫描器。

由于zxing条码扫描器本身给出错误对话框“错误,无法解释QR码”。被展示。

+0

请检查以上...我发布的异常 – Kingraj

+0

你好Kingraj, 你可以在这里做什么是检查哪一行你得到索引超出了绑定的异常,从错误日志本身 你可以使用try catch处理异常,并可以显示错误对话框,如zxing条码扫描器在你的catch块。 在这里处理IndexOutOfBoundsException或简单地处理Exception –