我正在尝试创建一个简单的Android应用程序。我按照以下链接。 https://developer.android.com/training/basics/firstapp/building-ui.html
在开发者网站中,他们要求我编辑activity_main.xml.in,要求他们删除文本视图并将相对布局更改为线性布局。令我惊讶的是,我的activity_main.xml与开发人员不同,我使用他们在教程中提到的完全扫描来编辑它。但现在,当我浏览项目文件夹时,我发现另一个名为fragment_main.xml的xml文件(类似于开发人员activity_main.xml),这个xml包含了相对布局和textview的标签,而我的activity_main.xml中没有。我不知道这是怎么发生的。我很困惑是否像我对activity_main.xml那样编辑我的fragment_main.xml?
MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
现在我在Mainactivity.java中收到错误。
错误表示容器无法解析或不是字段。
这就是我的activity_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:id="@+id/edit_message"
android:layout_weight="1"
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>
这就是我的fragment_main.xml的外观。
<RelativeLayout 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="com.example.myfirstapp.MainActivity$PlaceholderFragment" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/edit_message" />
任何帮助都将不胜感激。
答案 0 :(得分:0)
activity_main.xml是活动的xml(布局)文件。
fragment_main.xml是生成的Fragment的xml文件,它有点像活动中的小视图。
如果您正在尝试创建一个简单的应用,请删除fragment_main.xml,这对于一个简单的应用来说不是必需的。同时删除活动中与Fragments(片段管理器等)相关的任何代码。
答案 1 :(得分:0)
我之前看过这个教程的类似问题 - 答案是在activity_main.xml中包含LinearLayout的这个属性。
android:id="@+id/container"
如果我没记错的话,你的fragment_main.xml用于扩展FragmentActivity的活动。
答案 2 :(得分:0)
下面:
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
R.id.container
无法解析,因为您的布局中没有此ID的元素
您必须在布局中添加容器ID,或者只需添加0
容器ID,如下所示:
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(0, new PlaceholderFragment()).commit();
}
奇怪的是你使用Fragments,因为链接的教程不是关于Fragments ...
答案 3 :(得分:0)
片段是活动的一部分,并且有自己的生命周期。初学者理解片段有点挑战性。 您可能在应用程序中创建了一个片段。 android(Main Activity.java)中的默认活动看起来像这样,只有一个与之关联的xml文件(activity_main.xml)。
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;
}
}
<强> activity_main.xml中强>:
<RelativeLayout 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" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
如果可能,尝试使用默认设置创建另一个应用程序。