私はViewPagerでアクティビティを持っています。viewPagerの各フラグメントはDailogFragmentを開きます。オブジェクトを挿入できます。AcceptボタンをクリックするとDialogFragmnentが閉じ、親フラグメントが情報を追加する必要があります。レイアウトへ。私はフラグメントと通信するためにインターフェイスを使用しますが、フラグメントのレイアウトを更新することはできません。私は良い結果が得られないいくつかのソリューションを試しました。dialogframentのフラグメントを更新できません
public class TransferPickingActivityProduct extends Fragment implements DialogFragmentProducts.DFragmentListener, DialogInterface.OnDismissListener {
private static final List<PackOperation> packsprod = new ArrayList<>();
private LinearLayout listprod;
@Override
public void onDismiss(DialogInterface dialogInterface) {
packsprod.size();
}
public void add(Picking pick, FragmentManager fragment, Long idProd) {
DialogFragmentProducts dFragment = DialogFragmentProducts.newInstance("PRODUCTO", pick.getId(), idProd);
dFragment.setTargetFragment(TransferPickingActivityProduct.this, 1);
dFragment.show(fragment, "PRODUCTO");
}
@Override
public void onFinishEditDialog(PackOperation packOperation) {
//Fragment f = fragment;
packOperation.save();
packsprod.add(packOperation);
//View v = f.getView();
}
}
とDialogFragmentProduct: のコードは、以下のリストであるあなたが本当に 簡単な方法Log.d(「私のデバッグ親フラグメントでダイアログからデータを取得するかどうかをチェックする必要があり、すべての
public class DialogFragmentProducts extends DialogFragment {
View view;
Picking picking;
PackOperation pack, packOp;
Holder holder;
byte index;
private static final int ZBAR_SCANNER_REQUEST = 0;
private Fragment fragment;
public DialogFragmentProducts(){
}
public static DialogFragmentProducts newInstance(String title, Long id, Long idProd) {
DialogFragmentProducts frag = new DialogFragmentProducts();
Bundle args = new Bundle();
args.putString("title", title);
args.putLong("picking", id);
if (idProd!= null)
args.putLong("producto", idProd);
else
args.putLong("producto", -1);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
super.onCreateDialog(savedInstanceState);
fragment = getTargetFragment();
String title = getArguments().getString("title");
picking = Model.load(Picking.class, getArguments().getLong("picking"));
Long test = getArguments().getLong("producto");
if (getArguments().getLong("producto")!=-1) {
packOp = ListService.getPackOperationbyProduct(String.valueOf(getArguments().getLong("producto"))).get(0);
}
LayoutInflater inflater = getActivity().getLayoutInflater();
view = inflater.inflate(R.layout.dialog_fragment_product, null);
Inicialize();
fragment = getTargetFragment();
return new AlertDialog.Builder(getActivity())
.setTitle(title)
.setView(view)
.setPositiveButton(this.getString(R.string.accept_button),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
try{
pack.setProductQty(Double.parseDouble((String) qty.getText().toString()));
pack.setPackage(holder.getPackFuente());
pack.setSync(false);
sendBackResult();
((TransferPickingActivityProduct)getTargetFragment()).onResume();
}
catch (Exception e){
Toast.makeText(getContext(), getResources().getString(R.string.data_entry), Toast.LENGTH_LONG).show();
}
}
})
.setNegativeButton(this.getString(R.string.cancel_button),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
((TransferPickingActivityProduct)getTargetFragment())
.doNegativeClick();
dismiss();
}
}).create();
}
public interface DFragmentListener {
void onFinishEditDialog(PackOperation packOperation);
}
public void sendBackResult() {
DFragmentListener listener = (DFragmentListener) getTargetFragment();
listener.onFinishEditDialog(pack);
dismiss();
}
public void launchScanner(View view) {
try {
if (isCameraAvailable()) {
Intent intent = new Intent(DialogFragmentProducts.this.getContext(), ZBarScannerActivity.class);
startActivityForResult(intent, ZBAR_SCANNER_REQUEST);
(intent.getStringExtra(ZBarConstants.SCAN_RESULT).equals(null));
} else {
Toast.makeText(this.getContext(), this.getString(R.string.available_camera), Toast.LENGTH_SHORT).show();
}
} catch (Exception e){
Toast.makeText(this.getContext(), this.getString(R.string.read_barcode_error), Toast.LENGTH_SHORT).show();
}
}
public boolean isCameraAvailable() {
PackageManager pm = DialogFragmentProducts.this.getActivity().getPackageManager();
return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case ZBAR_SCANNER_REQUEST:
if (resultCode == getActivity().RESULT_OK) {
String ean13 = data.getStringExtra(ZBarConstants.SCAN_RESULT);
Fragment f = getTargetFragment();
}
break;
}
}
@Override
public void onSaveInstanceState(final Bundle outState){
this.setTargetFragment(this, -1);
}
@Override
public void onDismiss(final DialogInterface dialog) {
super.onDismiss(dialog);
setTargetFragment(getTargetFragment(), 1);
Fragment parentFragment = getTargetFragment();
if (parentFragment instanceof DialogInterface.OnDismissListener) {
((DialogInterface.OnDismissListener) parentFragment).onDismiss(dialog);
}
}
}
'Fragment'とあなたの' DialogFragment'のコードを投稿してください。 –
申し訳ありませんが、私はコードを入れて、私はlistprodもonDimissまたはonFinishEditDialogを更新するためにアクセスすることができません – Shadowalker