Android 为什么碎片交易可以';无法通过它找到布局区域';谁的身份证?显示错误

Android 为什么碎片交易可以';无法通过它找到布局区域';谁的身份证?显示错误,android,android-layout,android-activity,android-fragments,android-linearlayout,Android,Android Layout,Android Activity,Android Fragments,Android Linearlayout,我在练习碎片。应用程序有三个按钮-开始、按钮1、按钮2。开始按钮应启动片段,按钮1和按钮2显示相应的文本。 问题出在我的activity.java文件中。 第34行显示了一个错误: 我的代码: MainActivity.java: package com.mycompany.fragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import a

我在练习碎片。应用程序有三个按钮-开始、按钮1、按钮2。开始按钮应启动片段,按钮1和按钮2显示相应的文本。 问题出在我的activity.java文件中。 第34行显示了一个错误:

我的代码: MainActivity.java:

 package com.mycompany.fragment;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.FragmentActivity;
//import android.support.v4.app.*;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends FragmentActivity {
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
   android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
     StartFrag startFrag = new StartFrag();
  fragmentTransaction.add(R.id.textViewArea_1,startFrag);
        fragmentTransaction.commit();
   }
public void clickButton(View view) {

         Fragment newFragment;
    if (view == findViewById(R.id.button)) {
        newFragment=new Fragment();
 } else if (view == findViewById(R.id.button1)) {
        newFragment= new Frag1();//shows error: "Incompitable types Required: android.support.v4.app.Fragment, Found: com.mycompany.fragment.Frag1"
    } else if (view == findViewById(R.id.button2)) {
        newFragment= new Frag2();//shows error: "Incompitable types Required: android.support.v4.app.Fragment Found: com.mycompany.fragment.Frag2"
    } else {
 newFragment=new Fragment();
    }
   android.support.v4.app.FragmentTransaction transaction=getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.textViewArea_1,newFragment);//Line 34
        transaction.addToBackStack(null);
        transaction.commit();
 }

}
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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
    android:background="#468499">

    <Button
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:text="Start"
        android:id="@+id/button"
        android:background="#6d0e0e"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="32dp"
        android:textColor="#147907"
        android:textStyle="bold"
        android:onClick="clickButton"/>

    <Button
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:text="Fragment 1"
        android:id="@+id/button1"
        android:layout_alignTop="@+id/button"
        android:layout_centerHorizontal="true"
        android:background="#6d0e0e"
        android:textColor="#147907"
        android:textStyle="bold"
        android:onClick="clickButton"/>

    <Button
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:text="Fragment 2"
        android:id="@+id/button2"
        android:layout_alignTop="@+id/button1"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:background="#6d0e0e"
        android:textColor="#147907"
        android:textStyle="bold"
        android:onClick="clickButton"/>


    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/textViewArea_1"
        android:background="#fbf896"></LinearLayout>


</RelativeLayout>
start_frag.xml:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:background="#468499">

</RelativeLayout>
frag_1.xml:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:background="#468499">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:text="Fragment 1"
        android:id="@+id/textView1"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="#6d0e0e"
        android:textSize="40dp" />
</RelativeLayout>
frag_2.xml:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:background="#468499">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:text="Fragment 2"
        android:id="@+id/textView2"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="#6d0e0e"
        android:textSize="40dp" />

</RelativeLayout>

日志中的错误:


除了我不知道你的
StartFrag
课程外,我觉得一切都很好。它需要是
Fragment
的子类。 在
onCreateView
中,应该为片段类膨胀xml,如下所示:
充气机。充气(右布局。启动框架


让我们知道。

请出示您的日志。您到底面临什么错误? 建议您导入正确的片段类吗

当您使用android.support.v4.app.FragmentManager时,在这种情况下,片段类应该是android.support.v4.app.fragment,而不是android.app.fragment。

请验证它并发布日志错误。

在StartFrag代码文件中,添加
导入android.support.v4.app.Fragment;
。这是为了确保您与
getSupportFragmentManager
方法调用一致。如果您有
导入android.Fragment
,您必须删除它。 其他Java文件中也存在同样的编译器问题。它们需要
导入android.support.v4.app.Fragment

注意:当您使用Studio向导时,它会插入
import android.Fragment
以与android 5(棒棒糖)兼容。但与使用Fragment的android 5之前版本存在兼容性问题。因此您必须执行这些支持.v4导入,并手动更改它们


您当前的问题只是一个编译错误,我认为我之前的回答仍然有效。

感谢原始Android,我更新了u要求的类。是的,该类也从Fragment扩展而来。虽然我还有很多代码要编写。但这是我提到的唯一错误。我不知道是什么问题。返回inflater.inflate(R.layout.start\u frag,container,false);我已经根据您的建议修复了这一行。但是错误永远不会消失。我需要重新启动android studio吗?我想我的布局ID(在activity\u main.xml中)有问题。它找不到id,因为我的方法是正确的。因此,这是一个编译器错误,不是运行时问题。检查您的导入,您导入的是不同片段中的不同类。在一个文件中,您导入的是import android.support.v4.app.Fragment;在另一个文件中,您导入的是import android.app.Fragment;使它们相同,您的代码应该可以工作原始的Android,不幸的是没有任何帮助。这就是为什么这次我发布了我的完整项目。如果你能检测到错误点的话。我知道我可能因为发布整个项目而非常无知和受侮辱,但这是我唯一的选择。在我导入你的完整项目之前,我看到一个错误。在MainActivity中,FragmentTransaction使用了droid.support.v4.app,但它导入了android.app.FragmentTransaction;将其更改为导入android.support.v4.app.FragmentTransaction(我也这么做)。同样,文件import android.app.Fragment,将其更改为android.support.v4.app.Fragment。基本上,新片段(对于棒棒糖)之间存在冲突和pre-Lollipop android.support.v4。如果您通过按Control键并单击对象来遵循对象声明的路径,则会有所帮助。在您的情况下,请单击Fragment。它应该引用程序包android.support.v4.app,以便使代码始终保持一致。Java编译器迫使您保持一致。对不起!听着,我做了和你说的完全相同的事情。但是clickButton方法在循环中仍然有错误。我已经注释掉了错误(通过更新我的帖子)。Riyana,我可以看到这里有进展。你不再有第34行的编译错误,与transaction.replace相关(R.id.textViewArea_1,newFragment)。但是,为了您的利益,请从该代码修复中学习。代码“newFragment=new Frag1()”也有相同的兼容性问题。看看Frag1.java,它有“import android.app.Fragment”,它需要更改为“import android.support.v4.app.Fragment”。如果你控制该文件中的点击片段,它应该引用包android.support.v4.app,以便兼容。我将更新我的答案以澄清。Raj,我已经用我的完整代码更新了帖子。这是否有助于你找到可能的解决方案,因为之前的建议对我没有帮助。
    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:background="#468499">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:text="Fragment 1"
        android:id="@+id/textView1"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="#6d0e0e"
        android:textSize="40dp" />
</RelativeLayout>
    package com.mycompany.fragment;

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Frag2 extends Fragment {

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.frag_2,container,false);
    }
}
    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:background="#468499">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="90dp"
        android:text="Fragment 2"
        android:id="@+id/textView2"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColor="#6d0e0e"
        android:textSize="40dp" />

</RelativeLayout>