开发一个简单的Android应用程序时出错

时间:2014-03-12 18:26:44

标签: android

我正在尝试创建一个简单的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" />

任何帮助都将不胜感激。

4 个答案:

答案 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>

如果可能,尝试使用默认设置创建另一个应用程序。