簡體   English   中英

片段設置值的 onCreateview 為全局變量返回空值?

[英]onCreateview of fragment set value to Global variable return null value?

我被困在一個片段中。下面是我的片段代碼

public class Tab1 extends Fragment {
    EditText address,contactNumber,dob;
    String adds;

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

        View v =inflater.inflate(R.layout.tab_1,container,false);

        contactNumber= (EditText)v.findViewById(R.id.editTextcontact);
        address= (EditText)v.findViewById(R.id.editText2);
        dob= (EditText) v.findViewById(R.id.editText3);

        contactNumber.setHint("Your ContactNo Plz");
        address.setHint("Your address Plz");
        dob.setHint("Your Data Of Birth");
//receive data from main activity
        TabedActivity activity = (TabedActivity) getActivity();
        String myDataFromActivity = activity.getMyData();
//
       adds=address.getText().toString();

        return v;
    }

    public String getData(){
      return adds;
    }
}

我想要的是當從主要活動調用這個片段時,edittext 中的文本應該傳遞給 adds 變量。我像上面一樣檢查它,但它顯示一個空值。我怎么能設置這個值。?請幫忙

您需要返回 address.getText().toString() 並檢查是否為空;

樣本:

public String getData(){
      if(address != null && address.getText() != null) 
      return address.getText().toString(); 
      return null; // block NPE
    }

在 onCreateView 你做:

address= (EditText)v.findViewById(R.id.editText2);

在同一事件中,您會執行以下操作:

adds=address.getText().toString();

但是此時用戶還沒有設置它的值。

也就是說,檢查您在活動中何時嘗試獲取此值也很重要。

在創建片段時,您應該將所需的數據從父活動傳遞到片段。 示例代碼如下

 Bundle args = new Bundle();
    args.putString("address", address);
    fragment.setArguments(args);

現在在你的片段中得到像

getArguments().getString("address");

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM