我将我的项目类组织在多个src文件夹中,这些文件一直工作得很好,直到我更改了活动之间的切换,现在将字符串传递到以下活动。我认为这个问题与课程路径有关。
Bundle bundle = new Bundle();
bundle.putString("email", userEmail);
Intent intent = new Intent(MainActivity.this,
com.fm.mondev.MeanSelection.class);
intent.putExtras(bundle);
startActivity(intent);
[编辑]我意识到问题与Classes的路径并不完全相关,即使我目前有MeanSelection.class而不是com.fm.mondev.MeanSelection.class。实际上,问题似乎与捆绑有关。当我在Login和Main活动之间使用它时,它可以工作,但不能用于Main活动之后的活动。我也尝试了下面显示的替代方法。我随后对相关活动进行了编辑。
Intent intent = new Intent(MainActivity.this,
MeanSelection.class);
intent.putExtra("email", userEmail);
startActivity(intent);
我看过我的logcat但是我找不到任何有用的东西。我知道如果我评论putExtra(s)行,这是有效的。
[答案]在搜索了logcat的每个错误行并阅读了你的答案后,我意识到其中一个变量是通过Log.d写的。因此,解决方案是删除这些行,因为它们只是为了验证变量是否通过捆绑从先前的活动中正确选取。我的结论是:从现在开始,我不会记录从一个活动传递到另一个活动的字符串。我不确定这是否真的是Android的一个问题,或者只是其中一个没有可行解释的事情,我们都知道这一点,但是一旦我删除了那些行,我就启动了我的应用程序。
答案 0 :(得分:6)
应用程序在应该打开第二个活动时崩溃。这是以下错误让我相信这与路径有关:“E / AndroidRuntime(7115):java.lang.RuntimeException:无法启动活动ComponentInfo {com.fm/com.fm.mondev.MeanSelection}:java。 lang.NullPointerException:println需要一条消息“
println需要一条消息与活动无关。阅读你的logcat!
当我尝试Log
空值时,我收到此错误,即
String foo = emptyBundle.getString("barValue");
Log.d(TAG, foo) // error, Log output functions cannot output null values.
Log.d(TAG, "barValue: " + barValue); // outputs "barValue: null"
确保您所记录的内容或System.out.printlning具有值。
答案 1 :(得分:1)
如果您只发送一个字符串,则不必使用Bundle。
Intent intent = new Intent(MainActivity.this, com.fm.mondev.MeanSelection.class);
intent.putExtra("com.fm.MainActivity.userEmail", userEmail);
startActivity(intent);
应该可以正常工作。我真的不知道这是否能解决您的问题,因为您从未说明错误信息是什么。
答案 2 :(得分:0)
根据您获得E/AndroidRuntime(7115): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fm/com.fm.mondev.MeanSelection}: java.lang.NullPointerException: println needs a message
的例外情况,您在com.fm.mondev.MeanSelection
活动的某些日志记录代码中获得了NPE。
例如,请检查:NullPointerException : println needs a message in android
答案 3 :(得分:0)
实际上,您收到的错误是: java.lang.NullPointerException:println需要一条消息
我认为你将某些null传递给println方法