我将EditText和Button标签添加到fragments_main.xml中。 但是,当我运行应用程序时,它不显示文本字段和按钮。 但是,当我将EditText和Button添加到activity_main.xml时,它工作正常。请帮忙。我有ADT v22.2.1-833290 这是activity_main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
</LinearLayout>
这是fragment_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<EditText android:layout_weight="1"
android:id="@+id/edit_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/button_send" />
</LinearLayout>
这是MainActivity Code:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
答案 0 :(得分:2)
您在哪里加载代码中的fragment_main.xml?
通常,一个Activity应该加载一个Fragment,Fragment应该加载你刚才提到的xml文件。
在上面的代码中,您只是在activity_main.xml
中加载了MainActivity
文件。因此,视图中仅显示activity_main.xml
的内容。
<强>更新强>
要加载fragment_main
XML文件,您可以:
将MainActivity
中的代码行从setContentView(R.layout.activity_main);
替换为setContentView(R.layout.fragment_main);
或者,在Fragment
中创建一个扩展MainActivity
的类,让该类加载fragment_main
XML。
要执行后者,您可以按照此处的分步指南进行操作:Fragments | Adding a UI
实质上,创建一个类:
public static class ExampleFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_main, container, false);
}
}
并在Fragment
(Fragments | Adding a Fragment to an Activity)中加载已创建的MainActivity
课程。
要加载,您可以在activity_main.xml
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment android:name="com.example.ui.ExampleFragment"
android:id="@+id/example_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
或者尝试一下mustafa给出的答案。
我希望这会有所帮助。
答案 1 :(得分:0)
你能试试吗?
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FrameLayout frame = new FrameLayout(this);
setContentView(frame, new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
if (savedInstanceState == null) {
Fragment newFragment = new ExampleFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.add(newFragment).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
ExampleFragment.java
public class ExampleFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_main.xml, container, false);
return view;
}
}