ViewPager ile bir etkinliğim var, viewPager üzerindeki her Fragman bir nesne ekleyebileceğim bir DailogFragment açabilir, Accept düğmesine bastığımda DialogFragmnent reddeder ve parent Fragment bilgi eklemek zorundadır Düzeni'ne. Fragmanla iletişim kurmak için arayüz kullanıyorum, ancak Fragmandaki Düzen'i güncelleyemiyorum. İyi sonuçlarla bazı çözümler denedim.Diyalog çerçevesindeki parça güncellenemiyor
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();
}
}
ve DialogFragmentProduct:
tümpublic 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);
}
}
}
Lütfen özellikle sizin aramızdaki iletişim de dahil olmak üzere 'Fragment' ve' DialogFragment 'için kod yazınız. –
Üzgünüm, kodu koydum, güncelleme listesine ekleyemedim ya da onDimiss ya da onFinishEditDialog – Shadowalker