当我用Fragments打开它时,应用程序崩溃了

时间:2017-12-08 20:22:01

标签: android android-fragments

我有这个问题:

我正在尝试在布局上创建一个带有2个按钮的应用程序,这个按钮打开2个不同的片段,但问题是当我打开应用程序时它会崩溃。

这是我的代码:

MainActivity:

package com.example.akroma.feina_final;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    Button boton1,boton2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        boton1 = (Button) findViewById(R.id.button2);
        boton1.setOnClickListener(this);
        boton2 = (Button) findViewById(R.id.button);
        boton2.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {

        Fragment fragment;

        android.support.v4.app.FragmentManager fm = getSupportFragmentManager();
        android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();

        switch (v.getId()) {
            case R.id.button:

                fragment = new FragmentOne();
                ft.replace(R.id.fragment_container, fragment);
                ft.commit();
                break;

            case R.id.button2:
                fragment = new FragmentTwo();
                ft.replace(R.id.fragment_container, fragment);
                ft.commit();
                break;
        }
    }

}

我创建了片段标准(空白)。

片段名称:

FragmentOne FragmentTwo

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="10dp"
    android:orientation="vertical"
    tools:context="com.example.akroma.feina_final.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Mapa" />

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Negocis" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <fragment
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>

</LinearLayout>

树上片段的名称:

FragmentOne

FragmentTwo

编辑:错误:错误导致类片段

膨胀的解决方案:

感谢:@svkaka

Change the fragment for:

    <View
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

新错误:

必须实现OnFragmentInteractionListener

有什么想法吗?我不知道自己做得不好。

提前致谢

1 个答案:

答案 0 :(得分:0)

替换此

<fragment
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

用这个

<View
            android:id="@+id/fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

U正在混合动态和静态片段