我想要實現片段溝通。其實我試圖從一個片段發送編輯文本數據到第二片段。我嘗試了一些代碼,但我的要求沒有得到滿足。不能接收來自一個片段的數據到另一個片段
我的第一個片段在這裏
我曾嘗試以不同的方式,但我解決不了,所以請指導我。
Verification.java首先片段
public class Verification extends Fragment {
EditText card_NO,pin_code;
Button button;
Toolbar toolbar;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.verificaton,null);
card_NO=(EditText)view.findViewById(R.id.cardNo);
pin_code=(EditText)view.findViewById(R.id.pin);
button=(Button)view.findViewById(R.id.varify);
toolbar=(Toolbar)view.findViewById(R.id.toolbar);
toolbar.setTitle("Verification");
listeners();
return view;
}
private void listeners() {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
acc_logIn();
}
});
}
private void acc_logIn(){
String cardid = card_NO.getText().toString().trim();
String pin = pin_code.getText().toString().trim();
verify(cardid,pin);
//
}
private void verify(final String cardid, final String pin){
class UserVerification extends AsyncTask<String,Void,String> {
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(getActivity(),"Please Wait",null,true,true);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
if(s.equalsIgnoreCase("Welcome....")){
Toast.makeText(getActivity(),"Successfully Verified",Toast.LENGTH_LONG).show();
String cardid = card_NO.getText().toString();
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
Bundle bundle=new Bundle();
bundle.putString(Config.KEY_ACCOUNT, cardid);
BankServices bankServices=new BankServices();
bankServices.setArguments(bundle);
transaction.add(R.id.myFrame,bankServices);
transaction.commit();
}else{
Toast.makeText(getActivity(),s,Toast.LENGTH_LONG).show();
}
}
@Override
protected String doInBackground(String... params) {
HashMap<String,String> data = new HashMap<>();
data.put("cardid",params[0]);
data.put("pin",params[1]);
RequestHandler rh=new RequestHandler();
String result=rh.sendPostRequest(Config.URL_VERIFY,data);
return result;
}
}
UserVerification uv = new UserVerification();
uv.execute(cardid,pin);
}
}
BankServices.java第二片段
public class BankServices extends Fragment {
private Button balance,transfer,bill;
private TextView textView;
private Toolbar toolbar;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Bundle bundle = this.getArguments();
if (bundle != null) {
String cardid = bundle.getString(Config.KEY_ACCOUNT);
textView.setText(cardid);
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.services,null);
balance=(Button)v.findViewById(R.id.bt_balanceInq);
transfer=(Button)v.findViewById(R.id.bt_transfer);
bill=(Button)v.findViewById(R.id.bt_payBill);
toolbar= (Toolbar) v.findViewById(R.id.toolbar);
toolbar.setTitle("Services");
// Bundle bundle = this.getArguments();
// if (bundle != null) {
// String cardid = bundle.getString(Config.KEY_ACCOUNT);
// textView.setText(cardid);
// }
listeners();
return v;
}
private void listeners() {
balance.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
CheckBal checkBal=new CheckBal();
// transaction.add(R.id.myFrame,checkBal);
transaction.replace(R.id.myFrame,checkBal);
transaction.addToBackStack(null);
transaction.commitAllowingStateLoss();
// transaction.commit();
}
});
transfer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
Transfer tr=new Transfer();
// transaction.add(R.id.myFrame,tr);
transaction.replace(R.id.myFrame,tr);
transaction.addToBackStack(null);
transaction.commitAllowingStateLoss();
}
});
bill.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
PayBill payBill=new PayBill();
// transaction.add(R.id.myFrame,payBill);
transaction.replace(R.id.myFrame,payBill);
transaction.addToBackStack(null);
transaction.commitAllowingStateLoss();
}
});
}
}
I try this now and it gives this error occurred ..
過程:com.example.hp.amibank,PID :3532 java.lang.NullPointerExc主器件接收:嘗試調用虛擬方法「無效android.widget.TextView.setText(java.lang.CharSequence中)」上的空對象引用 在com.example.hp.amibank.BankServices.onViewCreated(BankServices.java:31) 在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1010) 在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1171)
你加入捆綁到您的PayBill片段但PostExceute方法,你犯下BankService片段。首先檢查這種不匹配。 –