当试图向我的班级添加一个片段时我一直得到这个错误我不知道如何解决这个问题我很确定我正确地添加片段但错误一直出现并且当我尝试运行它时崩溃我的应用程序任何想法如何要解决这个问题?
XML文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:id="@+id/layout_default"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.ericvuu.whatsfordinner.RecipeActivity">
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.example.ericvuu.whatsfordinner.RecipeActivity"/>
<Button
android:id="@+id/recipe1"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginBottom="484dp"
android:background="@android:color/darker_gray"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
tools:layout_constraintBottom_creator="1"
tools:layout_constraintLeft_creator="1"
tools:layout_constraintRight_creator="1"
app:layout_constraintHorizontal_bias="0.0" />
<Button
android:id="@+id/recipe2"
android:layout_width="0dp"
android:layout_height="50dp"
android:background="@color/colorPrimaryDark"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/recipe1"
tools:layout_constraintLeft_creator="1"
tools:layout_constraintRight_creator="1"
tools:layout_constraintTop_creator="1" />
<Button
android:id="@+id/recipe3"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_marginTop="-11dp"
android:background="@android:color/darker_gray"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@+id/recipe2"
tools:layout_constraintLeft_creator="1"
tools:layout_constraintRight_creator="1"
tools:layout_constraintTop_creator="1" />
</android.support.constraint.ConstraintLayout>
Java文件
package com.example.ericvuu.whatsfordinner;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
public class RecipeActivity extends AppCompatActivity {
public Button recipeText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipe);
recipeText = (Button) findViewById(R.id.recipe1);
try {
String message;
FileInputStream fis = openFileInput("RecipeText");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
StringBuffer sb = new StringBuffer();
while ((message = br.readLine()) != null) {
sb.append(message + "\n");
}
recipeText.setText(sb.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void onClick(View v) {
}
}
和横向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"
android:weightSum="1">
<fragment
android:id="@+id/layout_default"
android:name="com.example.ericvuu.whatsfordinner.RecipeActivity"
android:layout_width="214dp"
android:layout_height="match_parent"
android:layout_weight="0.08" />
</LinearLayout>
答案 0 :(得分:0)
您正在为垂直和横向模式添加xml中的片段。因此,一旦您启动应用程序,它就会崩溃,因为您已经在活动中添加了片段。我建议最好尝试使用容器添加片段。
例如: - 把这一行放在你的xml
中 <LinearLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
而不是将直接片段添加到xml中。
并尝试以编程方式添加片段。
FragmentTransaction fragmentTransaction =
getFragmentManager().beginTransaction();
.......
......
并且还检查RecipeActivity是一个活动而不是片段。此代码仅适用于片段
答案 1 :(得分:0)
作为@MikeM。在评论中告诉您,您不能在片段标记内使用android:name
属性的活动。
指定Fragment中的android:name属性 要在布局中实例化的类。
所以,你不能使用以下内容:
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:name="com.example.ericvuu.whatsfordinner.RecipeActivity"/>
您需要将RecipeActivity
活动转换为Fragment。