2017-07-27 92 views
0

我正在構建一個具有帶有兩個按鈕(「新聞」或「社交」)的片段的Android應用程序。它被初始化爲新聞,然後如果在運行時單擊「社交」按鈕,它應該刷新與社交相關內容的片段。有沒有辦法做到這一點?Android - 帶有兩個按鈕的片段

Print screen showing what i want to achieve

+0

變化按鈕單擊事件 – sasikumar

+0

片段你實現什麼至今的說法來取代FrameLayout的內容?你已經試過了嗎?該問題應該更針對具體問題 – Fabio

回答

0

一種方式做到這一點是把在片段和展示兩個視圖/正常隱藏:

<!-- News --> 
<FrameLayout 
    android:id="@+id/news_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <!-- News content --> 

    </FrameLayout> 

<!-- Social --> 
<FrameLayout 
    android:id="@+id/social_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <!-- Social content --> 

</FrameLayout> 

然後,在Java中,你使用這些容器:

// show news and hide social example 
socialContainer.setVisibility(View.GONE) 
newsContainer.setVisibility(View.VISIBLE) 
+0

謝謝,效果很好:) –

0

是的,你可以通過在單擊按鈕監聽器上設置UI元素的值並傳遞單擊按鈕的相應內容來完成。但是,如果您想要以不同的方式表示信息,則需要根據點擊的按鈕製作容器佈局並設置可見性。

0

在您的新聞選項卡中,你可以通過下面的代碼

newsBtn.setOncliclListener(this); 
socialBtn.setOncliclListener(this); 

,並在你的onclick方法達到同樣的寫下來的代碼,根據BTN點擊更新視圖

@Override 
    public void onClick(View v) { 
     switch (v.getId()) { 
      case R.id.newsbtn: 
      socailview.setVisibility(View.GONE); 
      newsview.setVisibilty(View.VISIBLE); 
      loadYourNewsViewData(); 
       break; 
      case R.id.socialbtn: 
      newsview.setVisibilty(View.GONE); 
      socailview.setVisibility(View.VISIBLE); 

      loadYourSocialViewData(); 
      break; 
     } 
} 
0

你可以在您的主要活動中使用此代碼加載新聞片段作爲第一個片段

<fragment 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:name="name of your news fragment class" 
      android:id="@+id/newsFragment"/> 
0

就個人而言,我想:

  1. 做一個容器Fragment(只是你的這兩個按鈕),其中包含一個FrameLayout

  2. 創建一個基本抽象類BaseNewsFragment,它將成爲您的NewsFragmentSocialFragment的父級。

  3. 依賴哪個按鈕被點擊的,我會打電話的方法有特異性片段