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