程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> fragment-在Activity中調用Fragment的公有函數,變量為null

fragment-在Activity中調用Fragment的公有函數,變量為null

編輯:編程綜合問答
在Activity中調用Fragment的公有函數,變量為null

Activity代碼

                    String phone = ((EditText) findViewById(R.id.phone))
                            .getText().toString();
                    if (phone.isEmpty()) {
                        Toast.makeText(ForgetPsdActivity.this, "請輸入手機號碼",
                                Toast.LENGTH_LONG).show();
                        break;
                    } else {
                        ForgetPSD2Fragment fragment2 = new ForgetPSD2Fragment();
                        transaction.replace(R.id.fragmentcontainer, fragment2);
                        fragment2.setViewPhone(phone);
                        transaction.addToBackStack(null);
                        step = 2;
                    }

fragment2代碼

 public class ForgetPSD2Fragment extends Fragment {
    private View view;
    private TextView txtPhone;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.forgetpsd2, container, false);
        txtPhone = (TextView) view.findViewById(R.id.txtphone);
        return view;
    }

    public void setViewPhone(String phone) {
        if (txtPhone == null) {
            Log.i("debug", phone + "abs");
        }else{
            txtPhone.setText(phone);
        }
    }
}

上邊是我寫的在Activity與fragment之間通信的例子,但是測試發現在調用fragment2.setViewPhone(phone);的時候,txtPhone為null值,請教一下是為什麼,有什麼解決辦法可以處理這個問題?

最佳回答:


 fragment2.setViewPhone(phone);//這時候還沒初始化
 用
 Bundle bundle = new Bundle();
bundle.putString("order", "1111");
fragment.setArguments(bundle);

然後在fragment中
String name = getArguments().getString("order");
Jason_White
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved