私は検索していますが、アプリで起こっていることに似たものは見つかりません。私はIntentServiceを使ってファイルを読み込んだり、書き出したりするアプリケーションを持っていますが、他のアプリケーションから互換性のあるファイルを選択してアプリを起動した後に画面を回転させると、アプリケーションがクラッシュします。ファイルを選択する前に既に実行されていた場合はクラッシュしません。何が起きる可能性があり、どのように解決するかというアイデアはまったくありません。 エラーは、私が関連する可能性がどのような情報を知っているが、ここではエラーになりませんので、奇妙であるので:他のアプリのインテントから開始された場合にのみ、画面の回転でアプリがクラッシュする
java.lang.RuntimeException:
Unable to instantiate activity ComponentInfo{com.txintxe.dev.xxx/com.txintxe.dev.xxx.services.ExportImportService}: java.lang.ClassCastException: com.txintxe.dev.xxx.services.ExportImportService cannot be cast to android.app.Activity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2586)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4556)
at android.app.ActivityThread.-wrap19(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1502)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
Caused by: java.lang.ClassCastException: com.txintxe.dev.saltea.services.ExportImportService cannot be cast to android.app.Activity
at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2576)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2751)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4556)
at android.app.ActivityThread.-wrap19(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1502)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
マニフェストの(と思う)関連部分:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".ListActivity"
android:label="@string/app_name"
android:launchMode="singleTop"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<intent-filter>
<data
android:scheme="content"
android:mimeType="*/*"
android:host="*"
/>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<data
android:scheme="file"
android:mimeType="*/*"
android:pathPattern=".*\\.xxx"
android:host="*"/>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.EDIT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
private void doImportRecipe() {
Intent intent = getIntent();
intent.setAction(ExportImportService.ACTION_IMPORT);
intent.setClass(getApplicationContext(), ExportImportService.class);
startService(intent);
}
そして最後にIntentServiceにインテントを処理するメソッド:
私はIntentServiceを呼び出すために使用するアクティビティ内の方法protected void onHandleIntent(Intent intent) {
if (intent != null) {
final String action = intent.getAction();
final ArrayList<String> xxxKeys = intent.getStringArrayListExtra(EXTRA_XXXKEYS);
switch(action) {
case ACTION_IMPORT:
final Uri xxxPath = intent.getData();
handleActionImport(xxxPath);
break;
case ACTION_EXPORT:
handleActionExport(xxxKeys);
break;
case ACTION_SHARE:
handleActionShare(xxxKeys);
break;
}
}
}
解決する必要がある場合は、投稿する際に問題はありませんが、アプリケーションがインポート操作から開始されてから回転されない限り、マニフェストで
あなたの問題は 'によって引き起こされる:java.lang.ClassCastExceptionが:com.txintxe.dev.saltea.services.ExportImportServiceはandroid.app.Activity'にキャストすることはできません。あなたはチェックしてください。さらにコードを表示する。 – KeLiuyue
@KeLiuyueはい、私は知っていますが、問題は私のコードのどこにもIntentServiceを私が知る限りのアクティビティとしてキャストしようとしていないことです。アプリが別のアプリから起動された場合、アプリがバックグラウンドであった場合に画面を回転させるとクラッシュしてしまい、クラッシュすることはありません。 – TXinTXe
どこでも 'ExportImportService'が見つかりませんでした。 – KeLiuyue