Android ClassCastException:字符串到ArrayList强制转换引发异常
我在MainActivity中具有以下功能:Android ClassCastException:字符串到ArrayList强制转换引发异常,android,classcastexception,Android,Classcastexception,我在MainActivity中具有以下功能: private void exportToMail(String[] tos) { Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); emailIntent.setType("text/plain"); emailIntent.putExtra(Intent.EXTRA_EMAIL, tos); emailInte
private void exportToMail(String[] tos)
{
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
emailIntent.setType("text/plain");
emailIntent.putExtra(Intent.EXTRA_EMAIL, tos);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "gradius data ver: " + getAppVersion());
emailIntent.putExtra(Intent.EXTRA_TEXT, getFormattedData());
ArrayList<Uri> uris = new ArrayList<>();
for (File fileIn : new File(getExportFolder(this)).listFiles())
{
uris.add(FileProvider.getUriForFile(MainActivity.this, getString(R.string.file_provider_authority),fileIn));
}
if(!uris.isEmpty())
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
//This is where the error occurs according to the Logcat.
startActivity(Intent.createChooser(emailIntent, "Pick an Email provider"));
}
如果将文本和数据一起发送并不重要,并且如果希望将某些内容放入附件中,则可以删除到此行:emailIntent.putExtra(Intent.EXTRA_text,getFormattedData()); 我并没有找到一种方法来处理不同类型的数据和文本。 这是一个老生常谈的问题,但也许对某人有帮助
这对我很有用你能提到哪一行的方法会抛出这个吗?它看起来像是
EXTRA_TEXT
一个,在这种情况下,请为getFormattedData
方法添加代码。是的,我实际上在代码段的上面放了一条注释,但我会编辑我的问题,这样它会更清晰。啊,我错过了那条注释。我的bad@Keselme几天前我也犯了同样的错误。。。你试过我的答案了吗?我也有同样的问题有什么解决办法吗?
2019-04-02 14:05:58.566 10783-10783/com.crowdx.gradius.testapp W/Bundle: Key android.intent.extra.TEXT expected ArrayList<CharSequence> but value was a java.lang.String. The default value <null> was returned.
2019-04-02 14:05:58.567 10783-10783/com.crowdx.gradius.testapp W/Bundle: Attempt to cast generated internal exception:
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList
at android.os.BaseBundle.getCharSequenceArrayList(BaseBundle.java:1302)
at android.os.Bundle.getCharSequenceArrayList(Bundle.java:1076)
at android.content.Intent.getCharSequenceArrayListExtra(Intent.java:8227)
at android.content.Intent.migrateExtraStreamToClipData(Intent.java:11093)
at android.content.Intent.migrateExtraStreamToClipData(Intent.java:11056)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1666)
at android.app.Activity.startActivityForResult(Activity.java:4688)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:767)
at android.app.Activity.startActivityForResult(Activity.java:4646)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:754)
at android.app.Activity.startActivity(Activity.java:5007)
at android.app.Activity.startActivity(Activity.java:4975)
at com.crowdx.gradius_sdk.testApp.ui.activities.MainActivity.exportToMail(MainActivity.java:523)
at com.crowdx.gradius_sdk.testApp.ui.activities.MainActivity.selectedStrings(MainActivity.java:485)
at com.crowdx.gradius_sdk.testApp.ui.components.MultiSelectionSpinner$1.onClick(MultiSelectionSpinner.java:74)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:184)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6981)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
startActivity(Intent.createChooser(emailIntent, "Pick an Email provider"));