2017-01-01 54 views
0

當我嘗試實現下面這段代碼時,它會給出下面的錯誤。我不明白的是EditText輸入字段的靜態內容如何?這可能是非常基本的,我可能會在這裏失蹤。這是如何編輯文本字段靜態內容?

Error:(28, 32) error: non-static method findViewById(int) cannot be referenced from a static context 

代碼:

package com.example.kheriaa.meme_fragments_v1; 

    import android.app.Fragment; 
    import android.os.Bundle; 
    import android.support.annotation.Nullable; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.EditText; 


    public class TopSectionFragment extends Fragment { 

     private EditText TopText; 
     private EditText BottomText ; 


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


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

      TopText = (EditText) View.findViewById(R.id.TopText); 

      //return super.onCreateView(inflater, container, savedInstanceState); 
      return v; 
     } 
    } 

回答

2

試試這個:

TopText = (EditText) v.findViewById(R.id.TopText); 

代替

TopText = (EditText) View.findViewById(R.id.TopText); 

Fragment類沒有findViewById()方法;但是,Activity確實如此。編譯器抱怨,因爲這個Fragment是一個Activity的靜態內部類,所以它認爲你正試圖調用該方法。

如果你正試圖獲得來自片段佈局的視圖,然後更改findViewById()rootView.findViewById().

如果你正在試圖獲得來自Activity佈局視圖,然後將其更改爲getActivity().findViewById()

+0

這是因爲我認爲目標是 「V」?而不是查看? – supersayan

+0

@supersayan是因爲View的實例是v,所以你應該使用v.findViewById(R.id.TopText); –

+0

@supersayan我補充說明 – rafsanahmad007

0

你應覆蓋methond onActivityCreated,然後使用

TopText =(EditText)getActivity()。findViewById(R.id.TopText);

順便說一句,rafsanahmad007是完全正確的,他的回答只是確保你在onActivityCreated中執行它,因爲片段和活動生命週期是個體的,所以onCreateView可能被稱爲BEFORE onActivityCreated。

0

替換該TopText = (EditText) View.findViewById(R.id.TopText);TopText = (EditText) v.findViewById(R.id.TopText);