2015-10-24 54 views
-2

我已經看到了關於片段的教程,其中主要活動是使用片段後改變片段的按鈕創建的。我的問題是,我可以使用被調用佈局的按鈕而不是主要活動的按鈕來更改片段。這是我目前的困境。之前,我的應用程序運行的意圖是改變活動。但我遇到了一個問題,我需要使用片段來解決它。使用片段內的按鈕更改活動

這裏是我的 「主」 片段代碼:

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個按鈕,這些按鈕已用於更改活動。 所有幫助非常感謝

回答

0

那麼,你想要做的是最好使用以編程方式添加在活動上的片段。

我會留下一個小項目,我有一個活動,並使用兩個按鈕,一個片段屏幕替換另一個。

你可以在發送Gitub的鏈接中找到完整的代碼,你可以下載,如果你想免費供你使用和分析你想。

Fragmetn replaces another Fragment. Github Project

我留下的截圖,所以你可以看到它是如何工作的。

Screenshot 1

Screenshot 2

Screenshot 3

我希望我的幫助是非常有用的。

+0

嘿,我試圖做基於我在這裏上傳圖片我想要什麼。發生的事情是,分散的活動顯示,但它顯示在主要活動的頂部。片段似乎是透明的活動。你能教我如何隱藏主要活動嗎?片段內顯示的活動中的可點擊項也會失去其功能,例如我的微調不能將文本放置在編輯文本上。 – halfBlue3

0

所以你的意思是,我仍然需要有一個單獨的按鈕來改變活動,我不能再使用我以前的按鈕。我只是想,我可以使用我以前的主要活動,然後調用一個包含片段的活動。當我點擊一個按鈕的主要活動,該按鈕調用「各自爲政」的活動,改變片段調用

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