0

私はlistViewを使用してフラグメントタブを持っています。リストビュー(arrayAdapter)の各行は、画像ボタンを持っている、と私はこのようなボタンのクリックイベントを設定します。私のtabFragmentでonActivityResultはフラグメントタブでは機能しません

public View getView(final int position, View convertView, ViewGroup parent) 
{ 
    View row = convertView; 

    if (row == null) { 
     LayoutInflater inflater = (LayoutInflater) this.getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row = inflater.inflate(R.layout.vehiclereservationdocument_list, parent, false); 
    } 

    VehicleReservationDocument vrDocument = getItem(position); 

    Button btnTakePicture = (Button) row.findViewById(R.id.btnTakePicture); 
    btnTakePicture.setTag(R.id.WOP_POSITION, position); 
    btnTakePicture.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      takePicture((Integer) view.getTag(R.id.WOP_POSITION)); 
     } 
    }); 

    btnTakePicture.setVisibility(View.VISIBLE); 

    return row; 
} 

public void takePicture(int position) { 
    // Ação do botão 

    documentStrategy = DocumentStrategy.PICTURE; 
    VehicleReservationDocument vrd = vehicleReservationDocuments.get(position); 
    this.argDocument = position; 

    fileUri = getOutputMediaFileUri(vrd.getVehicleReservation()); 

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    VehicleReservationTabFragment.fragmentWhoCalledStartActivityForResult = VehicleReservationTabFragment.VehicleReservationTabFragmentGroupId.TAB_VEHICLERESERVATION_DOCUMENT.ordinal(); 
    TabVehicleReservationDocumentFragment.setFileUri(fileUri); 
    TabVehicleReservationDocumentFragment.setArgDocument(argDocument); 

    ((Activity) context).startActivityForResult(intent, documentStrategy.ordinal()); 
} 

がActivityResult:写真をとった後

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     ACTION _actionOrigin = TabVehicleReservationDocumentFragment._actionOrigin; 

     UploadDocument uploadDocument = new UploadDocument(getActivity(), _actionOrigin); 
     uploadDocument.execute(); 
} 

、私はに行く必要がonActivityResultは動作しませんが、イベントは呼び出されません。誰でも私を助けることができますか?ありがとう!!!

+0

親アクティビティでonActivityResult()をオーバーライドしました – Shruti

+0

私は試しましたが、動作しません! –

答えて

0

アダプタを設定したら、次のようなことをしてください。これが役に立ちます。

YourAdapter adapter = new YourAdapter(do your stuff, clickListener); 
listView.setAdapter(adapter); 


Define this method in your Activity 

View.OnClickListener clickListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     documentStrategy = DocumentStrategy.PICTURE; 
     VehicleReservationDocument vrd = vehicleReservationDocuments.get(position); 
     this.argDocument = position; 

     fileUri = getOutputMediaFileUri(vrd.getVehicleReservation()); 

     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     VehicleReservationTabFragment.fragmentWhoCalledStartActivityForResult = VehicleReservationTabFragment.VehicleReservationTabFragmentGroupId.TAB_VEHICLERESERVATION_DOCUMENT.ordinal(); 
     TabVehicleReservationDocumentFragment.setFileUri(fileUri); 
     TabVehicleReservationDocumentFragment.setArgDocument(argDocument); 

     startActivityForResult(intent, documentStrategy.ordinal()); 
    } 
}; 

**Your Adapterclass** 

public class YourAdapter extend BaseAdapter { 
    private View.onClickListener clickListener; 

    public YourAdapter(your stuff, View.onClickListener clickListener) { 
     this.clickListener = clickListener; 
    } 

    public View getView(final int position, View convertView, ViewGroup parent) { 
     View row = convertView; 

     if (row == null) { 
      LayoutInflater inflater = (LayoutInflater) this.getContext() 
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(R.layout.vehiclereservationdocument_list, parent, false); 
     } 

     VehicleReservationDocument vrDocument = getItem(position); 


     Button btnTakePicture = (Button) row.findViewById(R.id.btnTakePicture); 
     btnTakePicture.setTag(R.id.WOP_POSITION, position); 
     btnTakePicture.setOnClickListener(clickListener); 

     btnTakePicture.setVisibility(View.VISIBLE); 

     return row; 
    } 
} 
0

だけ

startActivityForResult(intent, documentStrategy.ordinal()); 
+0

プロセスがarrayadapterクラスから呼び出されているために不可能です –

0
コンテキストなしでstartActivityForResultを使うフラグメントクラスでのご takePicture方法を移動し

。そして

startActivityForResult(intent, documentStrategy.ordinal()); 

代わりの

((Activity) context).startActivityForResult(intent, documentStrategy.ordinal()); 

まずメソッドのコールバックフラグメントonActivityResult、二コールバック・アクティビティのonActivityResult

+0

問題はボタンが配列adapterAdapterにあり、私のフラグメントから同じものにアクセスできないため、arrayAdapterクラスによるtakepictureメソッドを使用しています。 –

+0

リスナーを実装して、フラグメント –

0

あなたがstartActivityForResult(意図、111)を呼び出すことを確認してくださいあなたのフラグメントで結果を得るためにを使用します; getActivity()の代わりにstartActivityForResult(intent、111);あなたの断片の中に。

+0

からそのメソッドにアクセスできます。用量は機能する...不思議な権利ですか? –

関連する問題