我尝试过 getActivity().findViewById()
和 getView()
。这是我的 fragment 中的代码。它们都返回 null..
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.edit_viewer, container, false);
Bundle bundle = getArguments();
id = bundle.getLong("VIEWER_ID");
DatabaseHelper dbHelper = new DatabaseHelper(getActivity());
username = (EditText)getView().findViewById(R.id.username);
password = (EditText)getView().findViewById(R.id.entry);
hostUrl = (EditText)getView().findViewById(R.id.hostUrl);
webApp = (EditText)getView().findViewById(R.id.webApp);
modelId = (EditText)getView().findViewById(R.id.modelId);
properties = (EditText)getView().findViewById(R.id.properties);
Activity 代码
public class EditViewerActivity extends ActionBarActivity {
private Long id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_viewer);
Intent intent = getIntent();
Long id = intent.getLongExtra("VIEWER_ID", 0);
ViewerEditFragment newFragment = new ViewerEditFragment();
Bundle bundle = new Bundle();
bundle.putLong("VIEWER_ID", id);
newFragment.setArguments(bundle);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, newFragment)
.commit();
}
}
edit_viewer.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/edit_viewer"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
style="?android:attr/listSeparatorTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="sfn Credentials"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username"
android:paddingLeft="10dp" />
<EditText
android:id="@+id/username"
android:hint="Admin"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/password"
android:paddingLeft="10dp" />
<EditText
android:id="@+id/entry"
android:inputType="textPassword"
android:hint="Password"
android:minWidth="100dip"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<TextView
style="?android:attr/listSeparatorTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Host Settings"/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/host_url"
android:paddingLeft="10dp" />
<EditText
android:id="@+id/hostUrl"
android:hint="http://www.mysfn.com"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/web_app"
android:paddingLeft="10dp" />
<EditText
android:id="@+id/webApp"
android:hint="sfn"
android:minWidth="100dip"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/model_id"
android:paddingLeft="10dp" />
<EditText
android:id="@+id/modelId"
android:hint="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/properties"
android:paddingLeft="10dp" />
<EditText
android:id="@+id/properties"
android:hint="dv=icon"
android:minWidth="100dip"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
<Button android:id="@+id/close"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="Save" />
</LinearLayout>
最佳答案
改变这个
username = (EditText)getView().findViewById(R.id.username);
至
username = (EditText)rootView.findViewById(R.id.username);
并对所有其他 View
执行相同的操作
关于java - Fragment 中的 findViewById 返回 Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24952692/