2017-05-11 48 views
-1

我想要實現片段溝通。其實我試圖從一個片段發送編輯文本數據到第二片段。我嘗試了一些代碼,但我的要求沒有得到滿足。不能接收來自一個片段的數據到另一個片段

我的第一個片段在這裏

我曾嘗試以不同的方式,但我解決不了,所以請指導我。

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)

+0

你加入捆綁到您的PayBill片段但PostExceute方法,你犯下BankService片段。首先檢查這種不匹配。 –

回答

0

嘗試

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(); 

       String cardid = card_NO.getText().toString(); 
       PayBill payBill = new PayBill(); 
       Bundle bundle = new Bundle(); 
       bundle.putString(Config.KEY_ACCOUNT, cardid); 
       payBill.setArguments(bundle); 

      } 
     }); 
    } 

    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(); 
        FragmentManager manager=getFragmentManager(); 
       FragmentTransaction transaction=manager.beginTransaction(); 
       BankServices bankServices=new BankServices(); 
       transaction.add(R.id.myFrame,bankServices); 
       transaction.commit(); 
        Bundle bundle=new Bundle(); 

        bundle.putString(Config.KEY_ACCOUNT, cardid); 
        PayBill payBill=new PayBill(); 
        payBill.setArguments(bundle); 

        FragmentManager manager= getActivity().getFragmentManager(); //getSupportFragmentManager 
        FragmentTransaction transaction=manager.beginTransaction(); 
        Bundle bundle=new Bundle(); 

        bundle.putString(Config.KEY_ACCOUNT, cardid); 
        PayBill payBill=new PayBill(); 
        payBill.setArguments(bundle); 
        transaction.add(R.id.yourFragmeID,payBill); 
        transaction.commit(); 

//     Intent intent = new Intent(getActivity(),PayBill.class); 
//     intent.putExtra(Config.KEY_ACCOUNT,cardid); 
//     startActivity(intent); 
       }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); 
    } 

} 

PayBill.java更新

public class PayBill extends Fragment { 
    private EditText ref; 
    private EditText bill; 
    private TextView textView; 

    private Button fetch,bt_pay; 


    private ProgressDialog loading; 
    Toolbar toolbar; 

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

    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v=inflater.inflate(R.layout.paybill,null); 
     ref=(EditText)v.findViewById(R.id.refId); 
     textView=(TextView)v.findViewById(R.id.tv_c); 
     bill=(EditText) v.findViewById(R.id.tv_Bill); 
     fetch=(Button)v.findViewById(R.id.bt_fetch); 
     bt_pay=(Button)v.findViewById(R.id.bt_payBill); 

     fetch.setOnClickListener(
       new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       getBill(); 
      } 
     }); 

     bt_pay.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       paybill(); 
      } 
     }); 

     toolbar=(Toolbar)v.findViewById(R.id.toolbar); 
     toolbar.setTitle("Pay Bill"); 

     Bundle bundle = this.getArguments(); 
     if (bundle != null) { 
      String cardid = bundle.getString(Config.KEY_ACCOUNT); 
      textView.setText(cardid); 
     } 

     return v; 
    } 

    private void getBill(){ 
     final String rid = ref.getText().toString().trim(); 
     if (rid.equals("")) { 
      Toast.makeText(getActivity(), "Please enter an id", Toast.LENGTH_LONG).show(); 
      return; 
     } 
     loading = ProgressDialog.show(getActivity(),"Please wait ......","fetching....",false,false); 
     String url = Config.URL_Get_BILL+ref.getText().toString().trim(); 
     StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       loading.dismiss(); 
       showJSON(response); 
      } 

    }, 
      new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(getActivity(),error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
     } 
    }); 

    RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
    requestQueue.add(stringRequest); 
} 
    private void showJSON(String response){ 
     String sbill=""; 

     try { 
      JSONObject jsonObject = new JSONObject(response); 
      JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY); 
      JSONObject collegeData = result.getJSONObject(0); 
      sbill = collegeData.getString(Config.TAG_SHOW_BILL); 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     bill.setText(sbill); 
    } 
    private void paybill() { 


     final String rid = ref.getText().toString().trim(); 
     final String paydue = bill.getText().toString().trim(); 
     final String cardid=textView.getText().toString().trim(); 

     loading = ProgressDialog.show(getActivity(), "Please wait ......", "Working....", false, false); 

     StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.URL_PAY_BILL, 
       new Response.Listener<String>() { 

        @Override 
        public void onResponse(String response) { 
         loading.dismiss(); 
         Toast.makeText(getActivity(), response, Toast.LENGTH_LONG).show(); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         loading.dismiss(); 

         Toast.makeText(getActivity(), error.toString(), Toast.LENGTH_LONG).show(); 
         Toast.makeText(getActivity(), error.toString(), Toast.LENGTH_LONG).show(); 
         Toast.makeText(getActivity(), error.toString(), Toast.LENGTH_LONG).show(); 
        } 
       }) { 
      @Override 
      protected Map<String, String> getParams() { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put(Config.KEY_ACCOUNT, cardid); 
       params.put(Config.KEY_BILL_ID,rid); 
       params.put(Config.KEY_BILL_DUE, paydue); 
       return params; 
      } 

     }; 

     RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
     requestQueue.add(stringRequest); 

    } 

} 
+0

對不起,它也沒有工作........ –

+0

發佈你的活動代碼,你還沒有發佈有效的代碼切換片段 – Pehlaj

+0

我已更新答案爲您的緩解 – Pehlaj

0

問題是在第一個片段,其中您開始BankService片段和PayBill的只是創建對象,

代碼更新

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(); 
       FragmentManager manager=getFragmentManager(); 
      FragmentTransaction transaction=manager.beginTransaction(); 
      Bundle bundle=new Bundle(); 

       bundle.putString(Config.KEY_ACCOUNT, cardid); 
       PayBill payBill=new PayBill(); 
       payBill.setArguments(bundle); 
      transaction.add(R.id.myFrame,payBill); 
      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); 
} 
0

我希望這會幫助你

在片段1變化Post方法

Fragment PayBill = new PayBill(); 
          Bundle bundle = new Bundle(); 
          bundle.putString(Config.KEY_ACCOUNT, cardid); 
          PayBill.setArguments(bundle); 
          FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 
          FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
          fragmentTransaction.add(R.id.myFrame, PayBill); 
          fragmentTransaction.commit(); 

// -----------片段2 ---------------

public class PayBill extends Fragment { 
    private EditText ref; 
    private EditText bill; 
    private TextView textView; 
    String cardid; 
    private Button fetch,bt_pay; 
    private ProgressDialog loading; 
    Toolbar toolbar; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Bundle bundle = this.getArguments(); 
     if (bundle != null) { 
      cardid = getArguments().getString(Config.KEY_ACCOUNT); 

     } 
    } 
    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v=inflater.inflate(R.layout.paybill,null); 
     ref=(EditText)v.findViewById(R.id.refId); 
     textView=(TextView)v.findViewById(R.id.tv_c); 
     bill=(EditText) v.findViewById(R.id.tv_Bill); 
     fetch=(Button)v.findViewById(R.id.bt_fetch); 
     bt_pay=(Button)v.findViewById(R.id.bt_payBill); 
     textView.setText(cardid); 
     fetch.setOnClickListener(
       new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       getBill(); 
      } 
     }); 
     bt_pay.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       paybill(); 
      } 
     }); 
     toolbar=(Toolbar)v.findViewById(R.id.toolbar); 
     toolbar.setTitle(「Pay Bill」); 
     return v; 
    } 
    private void getBill(){ 
     final String rid = ref.getText().toString().trim(); 
     if (rid.equals(「」)) { 
      Toast.makeText(getActivity(), 「Please enter an id」, Toast.LENGTH_LONG).show(); 
      return; 
     } 
     loading = ProgressDialog.show(getActivity(),「Please wait ......「,」fetching....「,false,false); 
     String url = Config.URL_Get_BILL+ref.getText().toString().trim(); 
     StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       loading.dismiss(); 
       showJSON(response); 
      } 
    }, 
      new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(getActivity(),error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
     } 
    }); 
    RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
    requestQueue.add(stringRequest); 
} 
    private void showJSON(String response){ 
     String sbill=「」; 
     try { 
      JSONObject jsonObject = new JSONObject(response); 
      JSONArray result = jsonObject.getJSONArray(Config.TAG_JSON_ARRAY); 
      JSONObject collegeData = result.getJSONObject(0); 
      sbill = collegeData.getString(Config.TAG_SHOW_BILL); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     bill.setText(sbill); 
    } 
    private void paybill() { 
     final String rid = ref.getText().toString().trim(); 
     final String paydue = bill.getText().toString().trim(); 
     final String cardid=textView.getText().toString().trim(); 
     loading = ProgressDialog.show(getActivity(), 「Please wait ......「, 「Working....「, false, false); 
     StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.URL_PAY_BILL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         loading.dismiss(); 
         Toast.makeText(getActivity(), response, Toast.LENGTH_LONG).show(); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         loading.dismiss(); 
         Toast.makeText(getActivity(), error.toString(), Toast.LENGTH_LONG).show(); 
         Toast.makeText(getActivity(), error.toString(), Toast.LENGTH_LONG).show(); 
         Toast.makeText(getActivity(), error.toString(), Toast.LENGTH_LONG).show(); 
        } 
       }) { 
      @Override 
      protected Map<String, String> getParams() { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put(Config.KEY_ACCOUNT, cardid); 
       params.put(Config.KEY_BILL_ID,rid); 
       params.put(Config.KEY_BILL_DUE, paydue); 
       return params; 
      } 
     }; 
     RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
     requestQueue.add(stringRequest); 
    } 
} 
+0

它我不工作 –

+0

我更新我的代碼plz現在檢查... @ Nidhi –

相關問題