6

私のフラグメントでは、写真キャプチャの startActivityforresult インテントを開始しました。フラグメント クラスで onActivityResult コールバック メソッドをオーバーライドしました。他の目的のために、メイン アクティビティに onActivityResult コールバックを実装しました。私の問題は、実行がアクティビティ onActivityResult メソッドを呼び出し、null ポインター例外を返した後のフラグメント onActivityResult です。Fragment onactivityresult メソッド

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) 
    {
        prof_bitmap = null;
        if (requestCode == 0) 
        {
            Log.e("" ,"entered activity Result Code 0");
            Uri photoUri = data.getData();
            if (photoUri != null) 
            {
                String[] filePathColumn = { MediaStore.Images.Media.DATA };
                Cursor cursor = getActivity().getContentResolver().query(
                        photoUri, filePathColumn, null, null, null);
                cursor.moveToFirst();
                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                String filePath = cursor.getString(columnIndex);
                cursor.close();
                Log.e("" ,"File Path" +filePath);
                prof_bitmap = setImage(filePath);
            }
        }
        if (requestCode == 1) 
        {
            Log.e("" ,"entered activity Result Code 1");
            Bitmap bitmap = (Bitmap) data.getExtras().get("data"); 
            prof_bitmap = bitmap;
            Log.e("" ,"entered activity Result Code 1"+bitmap);
            profile_pic.setImageBitmap(bitmap);
        }
    }
}

アクティビティ onActivityResult

  @Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    Log.e("" ,"called onActivityResult in main");
    Session.getActiveSession().onActivityResult(this, requestCode,
            resultCode, data);
}

フラグメント onactivityresult メソッドのみを呼び出す方法は?

私のログキャット

結果 ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline-data dat=content://media/external/images/media/222 (extras) }} をアクティビティに配信できませんでした{com.mobiotics.tvbuddydemo/com.mobiotics.tvbuddydemo.TVBuddyMainActivity}: java.lang.NullPointerException

4

5 に答える 5

1

super.onActivityResult(requestCode, resultCode, data);フラグメントの行を削除してみてくださいonActivityResult()

于 2013-05-08T07:07:53.593 に答える
1

public void onActivityResultActivity開始したstartActivityForResultが終了したときに呼び出されますfinish()

于 2013-05-08T07:08:10.590 に答える
0

Activity の onActivityResult が最初に呼び出されます。Activity で結果の処理を削除するのではなく、requestCode を確認して必要なことを実行してください。

于 2013-05-08T07:20:36.637 に答える
0

私もこの問題に直面しています。

フラグメントからのアクティビティの呼び出し

((Activity)context).startActivityForResult(photoPickerIntent, 100);

ここでは FragmentActivity の「コンテキスト」です。これで、FargmentActivity の onActivityResult メソッドで結果が得られます。この結果を切り替えるには、fragmetn アクティビティ クラスでフラグメント クラスの静的変数を宣言する必要があります。

static ActivityUploadPhotos activityUploadPhotos;

...
ActivityUploadPhotos f = new ActivityUploadPhotos();
ActivityHome.activityUploadPhotos=f;
......

if(activityUploadPhotos!=null)
{
           activityUploadPhotos.onActivityResult(requestCode, resultCode, data);
}
于 2013-10-16T06:08:46.727 に答える