Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android BottomSheetDialogFragment结果到启动它的片段_Android_Fragment - Fatal编程技术网

Android BottomSheetDialogFragment结果到启动它的片段

Android BottomSheetDialogFragment结果到启动它的片段,android,fragment,Android,Fragment,我正在尝试侦听或将数据从BottomSheetDialogFragment传递到Fragment以更改片段上的内容,在按钮上单击我在Homefragment中显示BottomSheetDialogFragmentin,BottomSheetDialogFragmentwill将执行API调用,如果成功,它将关闭BottomSheetDialogFragment并执行Homefragment中的第二个API调用,在第二个API调用成功时,我将使textview可见性消失在Homefragment中

我正在尝试侦听或将数据从BottomSheetDialogFragment传递到Fragment以更改片段上的内容,在按钮上单击我在Homefragment中显示BottomSheetDialogFragmentin,BottomSheetDialogFragmentwill将执行API调用,如果成功,它将关闭BottomSheetDialogFragment并执行Homefragment中的第二个API调用,在第二个API调用成功时,我将使textview可见性消失在Homefragment中,这会给我带来NullpointerException

BottomSheetDialogFragment

 public class BottomSheetFragment extends BottomSheetDialogFragment implements LoginViewInteractor {

    public static final String TAG = "BottomSheetFragment";


    @BindView(R.id.edittext)
    EditText edittext;

    @BindView(R.id.zero_txt)
    CardView zero_txt;

    @BindView(R.id.one_txt)
    CardView one_txt;

    @BindView(R.id.two_txt)
    CardView two_txt;

    @BindView(R.id.three_txt)
    CardView three_txt;

    @BindView(R.id.four_txt)
    CardView four_txt;

    @BindView(R.id.five_txt)
    CardView five_txt;

    @BindView(R.id.six_txt)
    CardView six_txt;

    @BindView(R.id.seven_txt)
    CardView seven_txt;

    @BindView(R.id.eight_txt)
    CardView eight_txt;

    @BindView(R.id.nine_txt)
    CardView nine_txt;

    @BindView(R.id.clear)
    RelativeLayout clear;

    @BindView(R.id.next_btn)
    ShadowLayout next_btn;

    @BindView(R.id.clearImage)
    ImageView clearImage;

    @BindView(R.id.nic_logo)
    ImageView nic_logo;

    @BindView(R.id.enter_pin_txt)
    TextView enter_pin_txt;

    @BindView(R.id.close)
    ImageView close;

    @Inject
    ViewUtil viewUtil;

    @Inject
    PreferenceUtil preferenceUtil;

    @Inject
    LoginPresenter loginPresenter;

    @Inject
    DialogUtil dialogUtil;
    Dialog dialog;
    int pin_count;
    Button button;
    int length;

    String serviceName;
    Context context;

    public BottomSheetFragment() {
    }

    public BottomSheetFragment(String serviceName) {
        this.serviceName = serviceName;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // this is for rounded bottom sheet dialog
        setStyle(STYLE_NORMAL, R.style.AppBottomSheetDialogTheme);
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_pin_view, container, false);

        ButterKnife.bind(this, view);

        return view;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        Injector.component().inject(this);

        loginPresenter.attachViewInteractor(this);

        edittext.setShowSoftInputOnFocus(false);

        edittext.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                edittext.setLetterSpacing(0.8f);
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                if (s.length() >= 4) {
                    next_btn.setClickable(true);
                    next_btn.setVisibility(View.VISIBLE);
                    next_btn.setOnClickListener(v -> onClickNextBtn());
                } else {
                    next_btn.setClickable(false);
                    next_btn.setVisibility(View.INVISIBLE);
                }
                if (count >= 1 || s.length() >= 1) {
                    clear.setClickable(true);
                    clearImage.setVisibility(View.VISIBLE);
                } else if (count == 0) {
                    clear.setClickable(false);
                    edittext.setLetterSpacing(0.2f);
                    clearImage.setVisibility(View.INVISIBLE);
                } else {
                    clear.setClickable(true);
                    clearImage.setVisibility(View.VISIBLE);
                }
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });

        customKeyboard();

        close.setOnClickListener(v -> {
            BottomSheetFragment.super.onDismiss(getDialog());
        });
    }

    public void customKeyboard() {
        one_txt.setOnClickListener(v -> {
            edittext.append("1");
        });
        two_txt.setOnClickListener(v -> {
            edittext.append("2");
        });

        three_txt.setOnClickListener(v -> {
            edittext.append("3");
        });

        four_txt.setOnClickListener(v -> {
            edittext.append("4");
        });
        five_txt.setOnClickListener(v -> {
            edittext.append("5");
        });
        six_txt.setOnClickListener(v -> {
            edittext.append("6");
        });
        seven_txt.setOnClickListener(v -> {
            edittext.append("7");
        });
        eight_txt.setOnClickListener(v -> {
            edittext.append("8");
        });
        nine_txt.setOnClickListener(v -> {
            edittext.append("9");
        });
        zero_txt.setOnClickListener(v -> {
            edittext.append("0");
        });

        clear.setOnClickListener(v -> {

            length = edittext.getText().length();

            if (length > 0) {
                edittext.getText().delete(length - 1, length);
            }
        });

        clear.setOnLongClickListener(v -> {
            edittext.getText().clear();
            return true;
        });
    }

    private void onClickNextBtn() {

        Glide.with(this)
                .load(R.drawable.nicloader)
                .apply(new RequestOptions()
                        .diskCacheStrategy(DiskCacheStrategy.ALL)).into(nic_logo);

        enter_pin_txt.setText("Please wait...");

        clearImage.setVisibility(View.INVISIBLE);
        clear.setClickable(false);
        next_btn.setVisibility(View.INVISIBLE);
        clear.setClickable(false);

        loginPresenter.onLogin(edittext.getText().toString());

        loginPresenter.onLogin(edittext.getText().toString());

    }

    @Override
    public void onLoginSuccess(NicAsiaResponseModel<LoginResponseParams> response) {

        if (response.getStatus().equals("SUCCESS")) {

            onDismiss(getDialog());     // on Success dismiss BottomSheetDialogFragment

        }
    }

    @Override
    public void onLoginFailed(NicAsiaResponseModel<LoginResponseParams> response) {
        if (response.getStatus().equals("INVALID_PASSWORD")) {

            pin_count++;

            if (pin_count == 1) {
                dialog = dialogUtil.setDialog(getActivity(), getResources().getString(R.string.wrong_pin_txt1), getResources().getString(R.string.wrong_pin_txt2), getResources().getDrawable(R.drawable.wrong_pin));
                button = dialog.findViewById(R.id.common_pop_up_btn);
                button.setOnClickListener(v -> dialog.dismiss());
                nic_logo.setImageResource(R.drawable.logonica);
                enter_pin_txt.setText("Enter PIN Number");
                edittext.setText("");

            } else if (pin_count == 2) {
                dialog = dialogUtil.setDialog(getActivity(), getResources().getString(R.string.wrong_pin_txt1), getResources().getString(R.string.wrong_pin_txt3), getResources().getDrawable(R.drawable.wrong_pin));
                button = dialog.findViewById(R.id.common_pop_up_btn);
                button.setOnClickListener(v -> dialog.dismiss());
                dialog.findViewById(R.id.text3).setVisibility(View.VISIBLE);
                nic_logo.setImageResource(R.drawable.logonica);
                enter_pin_txt.setText("Enter PIN Number");
                edittext.setText("");
            }
        } else if (response.getStatus().equals("USER_BLOCKED")) {
            Intent intent = new Intent(getActivity(), AccountBlockedActivity.class);
            startActivity(intent);
        }
        System.out.println(response.getStatusDesc());
    }

    @Override
    public void onNetworkCallProgress() {

    }

    @Override
    public void onNetworkCallCompleted() {

    }

    @Override
    public void onHTTPError(int httpCode) {

    }

    @Override
    public void onNetworkCallError(Throwable e) {

    }

    @Override
    public void onDismiss(@NonNull DialogInterface dialog) {
        super.onDismiss(dialog);
        if (serviceName.equals(Config.Get_Balance_Wallet)) {
            new HomeFragment().makeApiCall();                 //Calling Second Api call which is in HomeFragmengt
        }
    }
}
  public class HomeFragment extends BaseFragment implements GetBalanceViewInteractor {

    private static final String TAG = "HomeFragment";

    @BindView(R.id.horizontalScrollView1)
    HorizontalScrollView horizontalScrollView1;

    @BindView(R.id.dashboard_txt_layout)
    ConstraintLayout dashboard_txt_layout;

    @BindView(R.id.greeting_txt)
    TextView greeting_txt;

    @BindView(R.id.user_name)
    TextView user_name;

    @BindView(R.id.dashboard_txt1)
    TextView dashboard_txt1;

    @BindView(R.id.view_balance)
    Button view_balance;

    @BindView(R.id.wallet_balance)
    LinearLayout wallet_balance;

    @BindView(R.id.wallet_balance_txt)
    TextView wallet_balance_txt;

    @BindView(R.id.saving_acct_balance_refresh_btn)
    ImageView saving_acct_balance_refresh_btn;

    @BindView(R.id.fd_acct_bal_refresh_btn)
    ImageView fd_acct_bal_refresh_btn;

    @BindView(R.id.wallet_card)
    CardView wallet_card;

    @BindView(R.id.wallet_acct_num)
    TextView wallet_acct_num;

    @BindView(R.id.saving_card)
    CardView saving_card;

    @BindView(R.id.saving_acct_num)
    TextView saving_acct_num;

    @BindView(R.id.fd_card)
    CardView fd_card;

    @BindView(R.id.others_acct_num)
    TextView others_acct_num;

    @BindView(R.id.scorllview)
    ScrollView scorllview;

    @BindView(R.id.dashboard1)
    ConstraintLayout dashboard1;

    @BindView(R.id.my_account)
    CardView my_account;

    @BindView(R.id.load_money)
    CardView load_money;

    @BindView(R.id.wallet_acct_txt)
    TextView wallet_acct_txt;

    @BindView(R.id.savings_acct_txt)
    TextView savings_acct_txt;

    @BindView(R.id.wallet_acct_balance_refresh_btn)
    ImageView wallet_acct_balance_refresh_btn;

    @Inject
    PreferenceUtil preferenceUtil;

    @Inject
    Gson gson;

    @Inject
    DialogUtil dialogUtil;

    Dialog dialog;

    ImageView close_pin;

    int scrollX, scrollY;

    BottomSheetFragment bottomSheetFragment;

    @Inject
    GetBalancePresenter getBalancePresenter;

    Animation animation;

    String wallet_amt;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_home, container, false);

        return view;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        Injector.component().inject(this);

        getBalancePresenter.attachViewInteractor(this);


        if (preferenceUtil.readBoolean(Config.WALLET_ACCT, false) == true) {
            wallet_card.setVisibility(View.VISIBLE);
            wallet_acct_txt.setText(preferenceUtil.readString(Config.WALLET_ACCT_TYPE, ""));
            wallet_acct_num.setText(preferenceUtil.readString(Config.WALLET_ACCT_NUM, ""));
        }
        if (preferenceUtil.readBoolean(Config.SAVINGS_ACCT, false) == true) {
            saving_card.setVisibility(View.VISIBLE);
            savings_acct_txt.setText(preferenceUtil.readString(Config.SAVINGS_ACCT_TYPE, ""));
            saving_acct_num.setText(preferenceUtil.readString(Config.SAVINGS_ACCT_NUM, ""));
        }
        if (preferenceUtil.readBoolean(Config.OTHERS_ACCT, false) == true) {
            fd_card.setVisibility(View.VISIBLE);
        }

        animation = AnimationUtils.loadAnimation(getActivity(), R.anim.rotate);

        horizontalScrollView1.setSmoothScrollingEnabled(true);
        scorllview.setSmoothScrollingEnabled(true);


        wallet_acct_balance_refresh_btn.setOnClickListener(v -> showBottomSheet(Config.Get_Balance_Wallet));

        view_balance.setOnClickListener(v -> showBottomSheet(Config.Get_Balance_Wallet));

        saving_acct_balance_refresh_btn.setOnClickListener(v -> saving_acct_balance_refresh_btn.startAnimation(animation));
        fd_acct_bal_refresh_btn.setOnClickListener(v -> fd_acct_bal_refresh_btn.startAnimation(animation));

        scorllview.getViewTreeObserver().addOnScrollChangedListener(() -> {
            scrollY = scorllview.getScrollY();

            if (scorllview.getScaleY() > 10) {
                dashboard1.setBackgroundColor(getResources().getColor(R.color.white_transparent_color1));
            } else if (scorllview.getScaleY() > 90) {
                dashboard1.setBackgroundColor(getResources().getColor(R.color.white_transparent_color2));
            } else if (scorllview.getScaleY() > 160) {
                dashboard1.setBackgroundColor(getResources().getColor(R.color.white));
            }
        });

        horizontalScrollView1.getViewTreeObserver().addOnScrollChangedListener(() -> {

            scrollX = horizontalScrollView1.getScrollX();

            if (horizontalScrollView1.getScrollX() > 0) {
                dashboard_txt_layout.setElevation(0);
            } else {
                dashboard_txt_layout.setElevation(1);
            }

            if (scrollX >= 30 && scrollX <= 100) {
                // updateKyctxt.setAlpha(0.9f);
                greeting_txt.setAlpha(0.6f);
                user_name.setAlpha(0.6f);
                dashboard_txt1.setAlpha(0.6f);
            } else if (scrollX >= 100 && scrollX <= 240) {
                // updateKyctxt.setAlpha(0.0f);
                greeting_txt.setAlpha(0.3f);
                user_name.setAlpha(0.3f);
                dashboard_txt1.setAlpha(0.3f);
            } else if (scrollX >= 240) {
                // updateKyctxt.setAlpha(0.0f);
                greeting_txt.setAlpha(0.0f);
                user_name.setAlpha(0.0f);
                dashboard_txt1.setAlpha(0.0f);
            } else if (scrollX == 0) {
                // updateKyctxt.setAlpha(1.0f);
                greeting_txt.setAlpha(1.0f);
                user_name.setAlpha(1.0f);
                dashboard_txt1.setAlpha(1.0f);
            }
        });

        my_account.setOnClickListener(v -> startActivity(MyAccount.class, null));

        load_money.setOnClickListener(v -> startActivity(LoadMoneyActivity.class, null));

    }

    public void showBottomSheet(String serviceName) {
        bottomSheetFragment = new BottomSheetFragment(serviceName);
        bottomSheetFragment.show(getFragmentManager(), BottomSheetFragment.TAG);
    }


    @Override
    public void onGetBalanceSuccess(NicAsiaResponseModel<GetBalanceResponseParams> response) {

        GetBalanceResponseParams openBasicAccountResponseParams = gson.fromJson(gson.toJson(response.getResponseParams()), GetBalanceResponseParams.class);

        if (response.getStatus().equals("SUCCESS")) {
            preferenceUtil.save("Wallet_Balance_success", true);
            preferenceUtil.save("Wallet_Balance", openBasicAccountResponseParams.getAvailableBalance());
            wallet_amt = openBasicAccountResponseParams.getAvailableBalance();
            view_balance.setVisibility(View.GONE);                            //  here i get Nullpointerexception
            wallet_balance.setVisibility(View.VISIBLE);
            wallet_balance_txt.setText("NPR" + openBasicAccountResponseParams.getAvailableBalance());
        }
    }

    @Override
    public void onGetBalanceFailed(NicAsiaResponseModel<GetBalanceResponseParams> response) {
        System.out.println(response.getStatusDesc());
    }

    @Override
    public void onNetworkCallProgress() {

    }

    @Override
    public void onNetworkCallCompleted() {

    }

    @Override
    public void onHTTPError(int httpCode) {
    }

    @Override
    public void onNetworkCallError(Throwable e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }

    public void makeApiCall() {                             // Second Api call method
        Injector.component().inject(this);
        getBalancePresenter.attachViewInteractor(this);
        GetBalanceParams getBalanceParams = new GetBalanceParams();
        getBalanceParams.setAccountNo(preferenceUtil.readString(Config.WALLET_ACCT_NUM, ""));
        getBalancePresenter.onGetBalance(getBalanceParams);
    }

 }
公共类BottomSheetFragment扩展了BottomSheetDialogFragment,实现了LoginView WinterActor{
公共静态最终字符串TAG=“BottomSheetFragment”;
@BindView(R.id.edittext)
编辑文本编辑文本;
@BindView(R.id.zero_txt)
CardView zero_txt;
@BindView(R.id.one_txt)
CardView one_txt;
@BindView(R.id.two_txt)
卡德维尤二号;
@BindView(R.id.three_txt)
卡德维尤三号;
@BindView(R.id.four_txt)
卡德维尤四号;
@BindView(R.id.five_txt)
卡德维尤五号;
@BindView(R.id.six_txt)
卡德维尤六号;
@BindView(R.id.seven_txt)
卡德维尤七号;
@BindView(R.id.eight_txt)
CardView八页;
@BindView(R.id.nine_txt)
卡德维尤九号;
@BindView(R.id.clear)
相对清晰;
@BindView(R.id.next\u btn)
下一步的阴影布局;
@BindView(R.id.clearImage)
图像视图清晰图像;
@BindView(R.id.nic_徽标)
ImageView nic_徽标;
@BindView(R.id.enter\u pin\u txt)
TextView输入_pin_txt;
@BindView(R.id.close)
图像视图关闭;
@注入
ViewUtil ViewUtil;
@注入
PreferenceUtil PreferenceUtil;
@注入
LoginPresenter LoginPresenter;
@注入
DialogUtil DialogUtil;
对话;
int pin_计数;
按钮;
整数长度;
字符串serviceName;
语境;
公共文件片段(){
}
公共数据片段(字符串serviceName){
this.serviceName=serviceName;
}
@凌驾
创建时的公共void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//这是用于圆形底部图纸对话框
setStyle(STYLE_NORMAL,R.STYLE.AppBottomSheetDialogTheme);
}
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u pin\u视图,容器,假);
ButterKnife.bind(这个,视图);
返回视图;
}
@凌驾
已创建公用void onview(@NonNull视图,@Nullable Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
Injector.component().Injector(这个);
loginPresenter.attachViewInteractor(此);
edittext.SetShowSoftInputInfo焦点(假);
edittext.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
edittext.setLetterSpacing(0.8f);
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
如果(s.长度()>=4){
下一步可点击设置(真);
下一步设置可见性(View.VISIBLE);
next_btn.setOnClickListener(v->onClickNextBtn());
}否则{
下一步可点击设置(错误);
下一步设置可见性(视图不可见);
}
如果(计数>=1 | | s.长度()>=1){
清除。可点击设置(真);
clearImage.setVisibility(View.VISIBLE);
}否则如果(计数==0){
清除。可点击设置(错误);
edittext.setLetterSpacing(0.2f);
clearImage.setVisibility(视图.不可见);
}否则{
清除。可点击设置(真);
clearImage.setVisibility(View.VISIBLE);
}
}
@凌驾
公共无效后文本已更改(可编辑){
}
});
自定义键盘();
close.setOnClickListener(v->{
BottomSheetFragment.super.onDismiss(getDialog());
});
}
公用键盘(){
一个_txt.setOnClickListener(v->{
edittext.append(“1”);
});
两个_txt.setOnClickListener(v->{
edittext.append(“2”);
});
three_txt.setOnClickListener(v->{
edittext.append(“3”);
});
四个txt.setOnClickListener(v->{
edittext.append(“4”);
});
五个txt.setOnClickListener(v->{
edittext.append(“5”);
});
六个txt.setOnClickListener(v->{
edittext.append(“6”);
});
seven_txt.setOnClickListener(v->{
edittext.append(“7”);
});
八个txt.setOnClickListener(v->{
edittext.append(“8”);
});
nine_txt.setOnClickListener(v->{
edittext.append(“9”);
});
zero_txt.setOnClickListener(v->{
edittext.append(“0”);
});
clear.setOnClickListener(v->{
length=edittext.getText().length();
如果(长度>0){
edittext.getText().delete(长度-1,长度);
}
});
清除。设置LongClickListener(v->{
edittext.getText().clear();
返回true;
});
}
私有void onClickNextBtn(){
用(这个)滑翔
.装载(右牵引式装载机)
.apply(新请求选项()
.diskCacheStrategy(diskCacheStrategy.ALL)).into(nic_徽标);
输入_pin_txt.setText(“请稍候…”);
clearImage.setVisi