[英]App is crashing Caused by: java.lang.IllegalStateException: No successful match so far
My app is running perfectly at debug mode but is crashing at release mode, so when i set debuggable to be true i realized that the error is from switch case and one method.我的应用程序在调试模式下完美运行,但在发布模式下崩溃,所以当我将 debuggable 设置为 true 时,我意识到错误来自 switch case 和一种方法。
Caused by: java.lang.IllegalStateException: No successful match so far
原因:java.lang.IllegalStateException:到目前为止没有成功匹配
at com.example.speakingtranslator.MainActivity.p(:3334)在 com.example.speakingtranslator.MainActivity.p(:3334)
at com.example.speakingtranslator.MainActivity$e.onClick(:228)在 com.example.speakingtranslator.MainActivity$e.onClick(:228)
at android.view.View.performClick(View.java:7043)在 android.view.View.performClick(View.java:7043)
at com.google.android.material.button.MaterialButton.performClick(:992)在 com.google.android.material.button.MaterialButton.performClick(:992)
at android.view.View.performClickInternal(View.java:7016)在 android.view.View.performClickInternal(View.java:7016)
at android.view.View.access$3200(View.java:783)在 android.view.View.access$3200(View.java:783)
at android.view.View$PerformClick.run(View.java:26595)在 android.view.View$PerformClick.run(View.java:26595)
at android.os.Handler.handleCallback(Handler.java:873)在 android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)在 android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)在 android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6758)在 android.app.ActivityThread.main(ActivityThread.java:6758)
at java.lang.reflect.Method.invoke(Native Method)在 java.lang.reflect.Method.invoke(本机方法)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:497)在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:497)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:912)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:912)
Caused by: java.lang.IllegalStateException: No successful match so far原因:java.lang.IllegalStateException:到目前为止没有成功匹配
here is my code这是我的代码
default:
if (checkInternetConnection()) {
getTranslateService();
result = translate();
} else {
result = getResources().getString(R.string.no_connection);
}
break;
editTranslate.setText(result);
And here are the methods这是方法
public void getTranslateService() {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try (InputStream is = getResources().openRawResource(R.raw.credentials)) {
//Get credentials:
final GoogleCredentials myCredentials = GoogleCredentials.fromStream(is);
//Set credentials and get translate service:
TranslateOptions translateOptions = TranslateOptions.newBuilder().setCredentials(myCredentials).build();
translate = translateOptions.getService();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
public String translate() {
originalText = editText.getText().toString();
Translation translation = translate.translate(originalText, Translate.TranslateOption.targetLanguage("yo"), Translate.TranslateOption.model("nmt"));
translatedText = translation.getTranslatedText();
//Translated text and original text are set to TextViews:
return translatedText;
}
Here is the full code of OnClickListener of the translate button,i have set of words that i don't want to bother to send them to the server, that's why I'm using switch case to test for them, so if the enterred value is not from the list then it should send the word to the api for translation.这是翻译按钮的 OnClickListener 的完整代码,我有一组我不想费心将它们发送到服务器的单词,这就是为什么我使用 switch case 来测试它们,所以如果输入的值不在列表中,则应将单词发送到 api 进行翻译。
trans.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
String t = editText.getText().toString().toLowerCase().trim();
if (t.length() == 0) {
Toast.makeText(getApplicationContext(), "Enter Text Value", Toast.LENGTH_LONG).show();
editText.requestFocus();
return;
}
String result;
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setMessage("Please wait while loading..."); // Setting Message
progressDialog.setTitle("Translating"); // Setting Title
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); // Progress Dialog Style Spinner
progressDialog.setCancelable(true);
progressDialog.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
progressDialog.dismiss();
}}, 2000);
switch (t) {
case "i love you":
result = "Mo nif̣ẹrẹ";
break;
case "i want you":
result = "Mo fẹ̣ ọ";
break;
case "good evening":
result = "Ẹ kaalẹ";
break;
case "i like you":
result = "Mo fẹran rẹ";
break;
case "how are you":
result = "Bawo lo se wa";
break;
case "i need your help":
result = "Mo nilo iranlọwọ re";
break;
case "i need money":
result = "Mo nilo owo";
break;
case "i miss you":
result = "Aro rẹ nsọ mi";
break;
case "what is my name":
result = "Kini orukọ mi";
break;
case "i love my husband":
result = "Mo niifẹ ọkọ mi";
break;
case "i am hungry":
result = "Ebi n pa mi";
break;
case "i want hot water":
result = "Mo fẹ omi gbona";
break;
case "look at me":
result = "Wo mi";
break;
case "come back":
result = "Pada wa";
break;
case "it is very good":
result = "O dara pupọ";
break;
case "come to school":
result = "Wa si ile-iwe";
break;
case "help yourself":
result = "Ran ara rẹ lọwọ";
break;
case "wait for me":
result = "Duro de mi";
break;
default:
if (checkInternetConnection()) {
getTranslateService();
result = translate();
} else {
result = getResources().getString(R.string.no_connection);
}
break;
}
editTranslate.setText(result);
}
});
Turn minifyenabled back to false has solved the problem.将 minifyenabled 转回false已解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.