使用片段内的按钮更改活动

时间:2015-10-24 12:44:28

标签: android android-fragments

我见过有关片段的教程,其中创建了一个主要活动,其中包含用于更改片段后片段的按钮。我的问题是,我可以使用被调用布局的按钮而不是主要活动的按钮来更改片段。这是我目前的困境。之前,我的应用程序使用意图来更改活动。但我遇到了一个问题,我需要使用片段来解决它。

这是我的"主要"片段代码:

public class FragmentMain extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_fragment_main);
        Log.d("Batelec", "fragment main started");
    }

    public void selectFrag(View view) {
         Fragment fr;

         fr = new FragmentMain2();
         FragmentManager fm = getFragmentManager();
         FragmentTransaction fragmentTransaction = fm.beginTransaction();
         fragmentTransaction.replace(R.id.fragment1, fr);
         fragmentTransaction.commit();

    }
}

这是我的布局文件:

<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.mypower_build101.FragmentMain" >

    <fragment
        android:id="@+id/fragment1"
        android:name="com.example.mypower_build101.FragmentMain2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true" />

</RelativeLayout>

这是我的主要活动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"
    tools:context="${relativePackage}.${activityClass}" >

    <Button
        android:id="@+id/btnAddDevice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="@string/txtAddDevice"
        android:onClick="addClick" />

    <Button
        android:id="@+id/btnShowDevice"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btnAddDevice"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="18dp"
        android:text="@string/txtShowDevice"
        android:onClick="showClick" />

    <Button
        android:id="@+id/btnMainRegister"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btnShowDevice"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="25dp"
        android:text="@string/txtRegister"
        android:onClick="registerClick" />

    <Button
        android:id="@+id/btnShowDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btnMainRegister"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="29dp"
        android:text="@string/txtShowDialog" />

    <TextView
        android:id="@+id/txtStatus"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btnShowDialog"
        android:layout_centerHorizontal="true"
        android:layout_margin="@dimen/listViewPadding"
        android:layout_marginTop="20dp"
        android:text="@string/txtNull"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Switch
        android:id="@+id/switchGCM"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
         android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:checked="false"
        android:text="@string/txtConnect2GCM"
        android:textOff="@string/txtNo"
        android:textOn="@string/txtYes" />

    <TextView
        android:id="@+id/txtBroadCastMsg"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/lblStatus"
        android:layout_alignStart="@+id/lblStatus"
        android:layout_below="@+id/lblStatus"
        android:layout_marginTop="17dp"
        android:gravity="center"
        android:text="@string/txtNull"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

如果我真的需要在我已经运行的活动之外创建按钮,你能否给出一些如何正确编码它们的提示我已经看到使用静态不是最好的方法。还给我一些关于如何在片段中放置新按钮的提示,因为我的主要活动有4个按钮,已用于更改活动。 所有的帮助非常感谢

2 个答案:

答案 0 :(得分:0)

嗯,你想要做的最好是使用以编程方式添加活动的片段。

我会留下一个小项目,我有一个活动,并使用两个按钮,一个片段屏幕替换另一个。

您可以在发送Gitub的链接中找到完整的代码,如果您愿意,可以根据需要随意下载。

Fragmetn replaces another Fragment. Github Project

我留下截图,这样你就可以看到它是如何工作的。

Screenshot 1

Screenshot 2

Screenshot 3

我希望我的帮助非常有用。

答案 1 :(得分:0)

所以你的意思是,我仍然需要一个单独的按钮来改变活动,我不能再使用我以前的按钮了。我只是想,我可以使用我之前的主要活动然后调用包含片段的活动。当我点击主要活动按钮时,按钮会调用&#34;碎片&#34;活动并更改它调用的片段

like this sorry the say i am not allowed to put image here yet