为什么我不能在此文件中使用findViewById
?
Regfragment:
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
public class RegFragment extends Fragment {
EditText text1,text2,text3;
Button btn1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.reg_layout, container, false);
return rootView;
}
}
然后我试着这样做:
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
public class RegFragment extends Fragment {
EditText text1,text2,text3;
Button btn1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.reg_layout, container, false);
return rootView;
text1 = (EditText) findViewById(R.id.text1); -----> ERROR....
}
}
我收到了错误
是因为我使用碎片吗?
答案 0 :(得分:8)
你不能在片段中使用它,因为它是活动方法
尝试以下
onActivityCreated() text1 = (EditText) getView().findViewById(R.id.text1);
或onCreateView()
text1 = (EditText) rootView.findViewById(R.id.text1);
答案 1 :(得分:3)
你使用过inflater
View rootView = inflater.inflate(R.layout.reg_layout, container, false);
所以使用
text1 = (EditText) rootView.findViewById(R.id.text1);
text2 = (EditText) rootView.findViewById(R.id.text2);
text3 = (EditText) rootView.findViewById(R.id.text3);
等等。
答案 2 :(得分:2)
你必须在返回语句之前这样做
View rootView = inflater.inflate(R.layout.reg_layout, container, false);
text1 = (EditText) rootView.findViewById(R.id.text1);
return rootView;
希望它会奏效。
答案 3 :(得分:1)
要访问片段中的视图,您需要通过包含布局的View
类来访问该视图。
您需要更改以下代码:
public class RegFragment extends Fragment {
EditText text1,text2,text3;
Button btn1;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.reg_layout, container, false);
text1 = (EditText)rootView .findViewById(R.id.text1);
//Same way initialize other views also.
return rootView;
}
}
答案 4 :(得分:1)
只是一个简单的方法。你已经夸大了布局。只是继承自那。找到下面的代码
View rootView = inflater.inflate(R.layout.reg_layout, container, false);
text1 = (EditText)rootView.findViewById(R.id.text1);
return rootView;
答案 5 :(得分:1)
由于您使用了单独的视图来扩充布局,因此您需要使用该视图来访问该布局中存在的所有文本视图/图像视图/编辑文本。
因此,要更正代码,您需要调整代码,如下所示
View rootView = inflater.inflate(R.layout.reg_layout, container, false);
text1 = (EditText) rootView.findViewById(R.id.text1);
return rootView;