1

我发现这篇文章最有帮助/没有帮助:在单个活动中的片段之间切换

我不确定我们是否有同样的问题,这就是为什么我无论如何都要发布我的代码,看看我是否也会以错误的方式解决这个问题。上述解决方案似乎使用一种我认为不需要片段的方法来解决问题。仍然很新,很可能我的逻辑是错误的。无论如何,这是我的问题:

我有一个屏幕出现,它给你两个选择,蓝色药丸或红色药丸(这两个按钮包含在一个片段中)。如果您选择红色药丸,则新片段将现有片段替换为文本“你留在仙境...”,或者如果选择蓝色药丸,则片段将现有片段替换为文本“故事结束...”。

这只是我现在用来自学片段的例子。

我有1 个活动1 个布局3 个片段

我的活动:

package com.example.learn.fragments;

import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;

public class MainActivity extends Activity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    /* Add a class to handle fragment */
    public static class SSFFragment extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View v = inflater.inflate(R.layout.choose_pill_frag, container,
                    false);
            return v;
        }
    }

    public void red(View view) {
        // Change fragment code here?
    }

    public void blue(View view) {
        // Change fragment code here?
    }

}

我的布局:

<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" >

    <fragment
        android:id="@+id/frag"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.example.learn.fragments.MainActivity$SSFFragment" />

</RelativeLayout>

起始片段:

<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" >

    <ImageButton
        android:id="@+id/imageButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:onClick="blue"
        android:src="@drawable/blue" />

    <ImageButton
        android:id="@+id/imageButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:onClick="red"
        android:src="@drawable/red" />

</RelativeLayout>

蓝色药丸碎片:

<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" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="The story ends, you wake up in your bed and believe whatever you want to believe."
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

红色药丸碎片:

<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" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="You stay in Wonderland and I show you how deep the rabbit-hole goes."
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

问题

1:我应该这样做吗?

2:完成此操作的适当代码是什么?片段交易?

4

2 回答 2

1

上述解决方案似乎使用一种我认为不需要片段的方法来解决问题。

我相信您发布的链接并没有完全避免碎片。片段可以在 xml 文件中指定(在这种情况下它们是永久的)或在使用 FragmentTransactions 的代码中指定(在这种情况下,您可以添加、删除它们)。

public void red(View view) {
    // Change fragment code here?
}

public void blue(View view) {
    // Change fragment code here?
}

我认为您希望此处的 onClickListeners 链接到您的图像按钮。在它们内部,您将调用FragmentTransaction添加/删除/交换。

于 2012-07-21T04:05:22.117 回答
0

看看这个。

我似乎错误地处理了片段。

替换片段不起作用/我是否以正确的方式执行此操作?

于 2012-08-10T08:07:12.997 回答