1

ユーザーに音声ファイルを選択させ、その音声ファイルのパスを保存させようとしています。ACTION_GET_CONTENT インテントを使用してそうしているので、ユーザーはアプリケーションを選択してファイルを選択できます。ただし、なんらかの理由で、エラー メッセージに示されているように、 onActivityResultメソッドでIntent データがnullとして返されます。Logcat エラー メッセージと関連するコードを以下に示します。どんな助けでも大歓迎です。

主な編集:- このエラーは、戻るボタンまたはキャンセルを押したときにのみ発生します。音楽ファイルの選択は、実際には問題なく機能します。申し訳ありません。それにもかかわらず、エラーは解決しません。

LogCat エラー:-

06-26 16:36:25.238: E/AndroidRuntime(24759): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {com.packagename.appname.activityname}: java.lang.NullPointerException

onCreate() で呼び出されるメソッドに配置されたチューザー アクティビティへの呼び出し:-

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setAction(Intent.ACTION_PICK);
intent.setType("audio/*");
startActivityForResult(intent, audioreminder);

onActivityResult() メソッド:-

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    SharedPreferences flags = this.getSharedPreferences(
            "screen_on_flags", MODE_WORLD_READABLE);
    SharedPreferences.Editor editor = flags.edit();
    String FilePath = data.getData().getPath();
    switch (requestCode) {
    case audioreminder: {
        if (resultCode == RESULT_OK) {
            editor.putString("audioreminderpath", FilePath);
            editor.commit();
        } else if (resultCode == RESULT_CANCELED){
            CheckBoxPreference other_audioreminder = (CheckBoxPreference) findPreference("other_audioreminder");
            other_audioreminder.setChecked(false);
            }
        break;
    }
    }
}
4

2 に答える 2

3

私が使用した、このコード..

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(Intent.createChooser(intent, "Gallery"), audioreminder);

また、onActivityResult()チェックIntent dataのいずれかが null であるかどうか

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if(data != null)
    {
    SharedPreferences flags = this.getSharedPreferences(
            "screen_on_flags", MODE_WORLD_READABLE);
    SharedPreferences.Editor editor = flags.edit();
    String FilePath = data.getData().getPath();
    switch (requestCode) {
    case audioreminder: {
        if (resultCode == RESULT_OK) {
            editor.putString("audioreminderpath", FilePath);
            editor.commit();
        } else if (resultCode == RESULT_CANCELED){
            CheckBoxPreference other_audioreminder = (CheckBoxPreference) findPreference("other_audioreminder");
            other_audioreminder.setChecked(false);
            }
        break;
    }
   }
  }
 else
 {
 Log.e("Intent data:" , "null")
 }
}

これを試して、何が起こるか教えてください..

于 2012-06-26T12:50:20.530 に答える
0

いいえ、エラーは、onActivityResult()メソッドが をスローしたというNullPointerExceptionことであり、データが必ずしもnull. メソッドのどこにエラーがあるかを確認するには、デバッグする必要があります。

于 2012-06-26T12:47:23.420 に答える