android 为什么getStringExtra不能给予正确的输出?

myzjeezk  于 2024-01-04  发布在  Android
关注(0)|答案(3)|浏览(183)

我试图将字符串从一个Intent传递到另一个Intent,但adt说:
关键字文本应为字符串,但值为android. text. SpannableString。已返回默认值。
但我使用的是String作为键,而不是它所声称的那样!
下面是我的第一个活动的代码:

  1. private int CONTACTS_ACTIVITY_REQUEST = 1001;
  2. public static final String TEXT_KEY = "text";
  3. ...
  4. Intent intent = new Intent(this, ContactsActivity.class);
  5. intent.putExtra(TEXT_KEY, text.getText());
  6. startActivityForResult(intent, CONTACTS_ACTIVITY_REQUEST);

字符串
我第二项活动:

  1. Intent intent = this.getIntent();
  2. text = intent.getStringExtra(MainActivity.TEXT_KEY);


谢谢.
p.s.下面是完整的堆栈跟踪:

  1. 03-22 14:51:32.975: W/Bundle(1248): Key text expected String but value was a android.text.SpannableString. The default value <null> was returned.
  2. 03-22 14:51:33.006: W/Bundle(1248): Attempt to cast generated internal exception:
  3. 03-22 14:51:33.006: W/Bundle(1248): java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String
  4. 03-22 14:51:33.006: W/Bundle(1248): at android.os.Bundle.getString(Bundle.java:1085) 03-22 14:51:33.006: W/Bundle(1248): at android.content.Intent.getStringExtra(Intent.java:4473)
  5. 03-22 14:51:33.006: W/Bundle(1248): at com.saeedFri.groupsms.ContactsActivity.onCreate(ContactsActivity.java:39)
  6. 03-22 14:51:33.006: W/Bundle(1248): at android.app.Activity.performCreate(Activity.java:5133)
  7. 03-22 14:51:33.006: W/Bundle(1248): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
  8. 03-22 14:51:33.006: W/Bundle(1248): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
  9. 03-22 14:51:33.006: W/Bundle(1248): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
  10. 03-22 14:51:33.006: W/Bundle(1248): at android.app.ActivityThread.access$600(ActivityThread.java:141)
  11. 03-22 14:51:33.006: W/Bundle(1248): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
  12. 03-22 14:51:33.006: W/Bundle(1248): at android.os.Handler.dispatchMessage(Handler.java:99)
  13. 03-22 14:51:33.006: W/Bundle(1248): at android.os.Looper.loop(Looper.java:137)
  14. 03-22 14:51:33.006: W/Bundle(1248): at android.app.ActivityThread.main(ActivityThread.java:5103)
  15. 03-22 14:51:33.006: W/Bundle(1248): at java.lang.reflect.Method.invokeNative(Native Method)
  16. 03-22 14:51:33.006: W/Bundle(1248): at java.lang.reflect.Method.invoke(Method.java:525)
  17. 03-22 14:51:33.006: W/Bundle(1248): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
  18. 03-22 14:51:33.006: W/Bundle(1248): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
  19. 03-22 14:51:33.006: W/Bundle(1248): at dalvik.system.NativeStart.main(Native Method)

xuo3flqw

xuo3flqw1#

变化

  1. intent.putExtra(TEXT_KEY, text.getText());

字符串

  1. intent.putExtra(TEXT_KEY, text.getText().toString());


在第一个活动中,你需要发送你值,getText方法返回Editable,所以如果你想要值,你需要使用toString()方法。
你可以在二等舱和

  1. text = intent.getStringExtra(MainActivity.TEXT_KEY).toString();


您需要使用这两种方法中的一种,

展开查看全部
dddzy1tm

dddzy1tm2#

您使用getStringExtra()方法获得的值是SpannableString,但您试图将其放入String中,这就是为什么其抛出错误如下所示。

  1. java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String

字符串
你可以尝试使用toString()方法,当你使用getStringExtra()方法检索字符串extra时,如下所示.

  1. Intent intent = this.getIntent();
  2. text = intent.getStringExtra(MainActivity.TEXT_KEY).toString();

tvz2xvvm

tvz2xvvm3#

在我的情况下得到了非常interresting黑客.我做了一切所需的,但我错过了它通过初始化绑定与空/空字符串.我有.

  1. public static final String TITLE = "";

字符串
代替

  1. public static final String TITLE = "Something Here"; // Solution


后来你的意图所遵循的:

  1. String title1 = title.getText().toString();
  2. Intent data = this.getIntent();
  3. data.putExtra(TITLE, title1);


然后在接待课上-

  1. String TITL = data.getStringExtra(SendingClass.TITLE);


干杯!

展开查看全部

相关问题