2017-01-01 58 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);