-1

プロジェクト クラスを複数の 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);

[編集] 現在、com.fm.mondev.MeanSelection.class の代わりに MeanSelection.class を使用していますが、問題がクラスのパスに完全に関連しているわけではないことに気付きました。実際、問題はバンドルに関連しているようです。ログイン アクティビティとメイン アクティビティの間で使用すると機能しますが、メイン アクティビティに続くアクティビティでは機能しません。以下に示す代替アプローチも試しました。それに応じてその後の活動を編集しています。

                Intent intent = new Intent(MainActivity.this,
                        MeanSelection.class);
                intent.putExtra("email", userEmail);
                startActivity(intent);

logcat を確認しましたが、有用なものは何も検出できません。putExtra(s) 行にコメントを付けると、これが機能することがわかります。

[回答] logcat のすべてのエラー行を調べて回答を読んだ後、Log.d を介して書き込まれた変数の 1 つに問題があることに気付きました。したがって、変数がバンドルを介して以前のアクティビティから正しく選択されたかどうかを確認するためだけに存在していたため、解決策はこれらの行を消去することでした。私の結論は次のとおりです。これからは、あるアクティビティから別のアクティビティに渡された文字列をログに記録しません。これが本当に Android の問題なのか、それとも実行可能な説明のない問題の 1 つなのかはよくわかりませんが、これらの行を消去するとすぐに、アプリを起動して実行することができました。

4

4 に答える 4

6

2 番目のアクティビティを開く必要があるときに、アプリがクラッシュします。これがパスに関連していると思わせる次のエラーです: "E/AndroidRuntime(7115): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fm/com.fm.mondev.MeanSelection}: java. lang.NullPointerException: println にはメッセージが必要です"

printlnには、アクティビティとは何の関係もないメッセージが必要です。ログキャットを読んでください!

Lognull 値にしようとすると、このエラーが発生します。

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"

Logging または System.out.printlning に値があることを確認してください。

于 2012-05-14T17:04:45.623 に答える
1

文字列を 1 つだけ送信する場合は、Bundle を使用する必要はありません。

Intent intent = new Intent(MainActivity.this, com.fm.mondev.MeanSelection.class);
intent.putExtra("com.fm.MainActivity.userEmail", userEmail);
startActivity(intent);

うまくいくはずです。エラーメッセージが何であるかを述べたことがないため、それで問題が解決するかどうかはわかりません。

于 2012-05-14T16:53:53.960 に答える
0

実際、あなたは次のことについて間違いを犯しています:java.lang.NullPointerException:printlnにはメッセージが必要です

私はあなたがprintlnメソッドに何か薄いnullを渡していると思います

于 2012-05-14T17:37:48.123 に答える
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のログ コードで NPE を取得していますcom.fm.mondev.MeanSelection

たとえば、これを確認してください: NullPointerException : println needs a message in android

于 2012-05-14T17:09:01.480 に答える