2017-03-03 102 views
-2
public class frag_aide extends Fragment { 

    FloatingActionButton fab_profile,fab_face,fab_twi ; 
    Animation FabOpen,FabClose,FabClockwise,FabantiClockwise; 

    boolean isOpen=false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     fab_plus =(FloatingActionButton)findViewById(fab_plus); 
     fab_nav=(FloatingActionButton)findViewById(fab_nav); 
     fab_fb =(FloatingActionButton)findViewById(fab_fb); 
     fab_twitte=(FloatingActionButton)findViewById(fab_twitte); 

     FabOpen= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fab_open); 
     FabClose= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fab_close); 
     FabClockwise= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.rotation_clock); 
     FabantiClockwise= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.rotation_anticlock); 

     fab_twi.setOnClickListener(new View.OnClickListener() { 


      @Override 
      public void onClick(View v) { 

       if (isOpen) { 
        fab_profile.startAnimation(FabClose); 
        fab_face.startAnimation(FabClose); 
        fab_twi.startAnimation(FabantiClockwise); 
        fab_profile.setClickable(false); 
        fab_face.setClickable(false); 
        isOpen = false; 
       } else { 
        fab_profile.startAnimation(FabOpen); 
        fab_face.startAnimation(FabOpen); 
        fab_twi.startAnimation(FabClockwise); 
        fab_profile.setClickable(true); 
        fab_face.setClickable(true); 
        isOpen = true; 
       } 

      } 
     }); 
    } 
} 

我有一個問題setContentViewfindViewByIdgetApplicationContext。如何使用'擴展片段'在片段中插入浮動操作按鈕?如何插入浮動操作按鈕內延伸片段

+0

不能使用''Fragment' setContentView'。你應該使用'onCreateView()'來代替。 – Wizard

+0

我改變了它,但我有一個問題,「findViewById/getApplicationContext」 我該如何解決這個問題 因爲我想插入浮動頁面的ResideMenu –

+0

發佈您的更新代碼。 – Wizard

回答

0
fab_twitte=(FloatingActionButton)findViewById(fab_twitte); 

你在這裏設置fab_twitte,但增加了聽者fab_twi.setOnClickListener放哪兒fab_twi應該是fab_twitte。

主要問題是您爲片段創建視圖的方式。我相信你會讀到碎片附着和從相應活動中分離出來的碎片的生命週期。

請勿在onCreate中膨脹佈局,請使用onViewCreated,因爲這與活動onCreate等效。使用片段中的onCreate初始化不綁定佈局的東西。

下面是一個更詳細的解釋。Android片段有自己的生命週期非常類似於android的活動。本節簡要介紹其生命週期的不同階段。 onAttach()片段實例與活動實例關聯。片段和活動未完全初始化。通常,您會在此方法中引用使用該片段進行進一步初始化工作的活動。

onCreate()系統在創建片段時調用此方法。您應該初始化片段暫停或停止時要保留的片段的基本組件,然後再繼續。

onCreateView()當片段第一次繪製其用戶界面時,系統調用此回調。要爲您的片段繪製UI,您必須從此方法返回一個View組件,該方法是片段佈局的根。如果片段不提供UI,則可以返回null。

onActivityCreated()onActivityCreated()在創建主機活動時在onCreateView()方法之後調用。已創建活動和片段實例以及活動的視圖層次結構。此時,可以使用findViewById()方法訪問視圖。例。在此方法中,您可以實例化需要上下文對象的對象。onStart()onStart()方法在片段可見時調用。

onResume()片段變爲活動狀態。

onPause()系統調用此方法作爲用戶離開片段的第一個指示。這通常是您應該提交應該在當前用戶會話之外保留的任何更改的位置。

的onStop()片段將被調用的onStop停止()

onDestroyView()片段視圖中調用這個方法

的onDestroy()的onDestroy()調用後做會破壞最終清理的片段的狀態,但不保證被Android平臺調用。

so just change from onCreate to onViewCreated ,plus fix the changes i stated in the aforementioned. 

****也不要使用getApplicationContext,使用getActivity()這個返回它連接到當前活動的上下文。簡而言之,getApplicationContext返回整個應用程序的上下文(進程中所有活動都在其中運行)。如果您需要一個與整個應用程序的生命週期相關的上下文,而不僅僅是當前的活動,則使用它而不是當前的活動上下文。所以不要使用它。

+0

我全部準備改變它 但沒有事情發生 我需要知道如何在片段中添加因爲我在Android初學者 –

+0

回答編輯請重新閱讀更詳細的解釋是提供先生。 – Remario

+0

現在你的代碼工作嗎?仍然錯誤。 – Remario

0
public class frag_aide extends Fragment { 

     FloatingActionButton fab_nav,fab_fb,fab_twitte, fab_plus ; 
     Animation FabOpen,FabClose,FabClockwise,FabantiClockwise; 

     boolean isOpen=false; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      onCreateView(R.layout.aide); 
      fab_plus = (FloatingActionButton) findViewById(fab_plus); 
      fab_nav = (FloatingActionButton) findViewById(fab_nav); 
      fab_fb = (FloatingActionButton) findViewById(fab_fb); 
      fab_twitte = (FloatingActionButton) findViewById(fab_twitte); 

      FabOpen = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fab_open); 
      FabClose = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fab_close); 
      FabClockwise = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotation_clock); 
      FabantiClockwise = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotation_anticlock); 

      fab_plus.setOnClickListener(new View.OnClickListener() { 


       @Override 
       public void onClick(View v) { 

        if (isOpen) { 
         fab_nav.startAnimation(FabClose); 
         fab_fb.startAnimation(FabClose); 
         fab_twitte.startAnimation(FabClose); 
         fab_plus.startAnimation(FabantiClockwise); 
         fab_nav.setClickable(false); 
         fab_fb.setClickable(false); 
         fab_twitte.setClickable(false); 
         isOpen = false; 
        } else { 
         fab_nav.startAnimation(FabOpen); 
         fab_fb.startAnimation(FabOpen); 
         fab_twitte.startAnimation(FabOpen); 
         fab_plus.startAnimation(FabClockwise); 
         fab_twitte.setClickable(true); 
         fab_nav.setClickable(true); 
         fab_fb.setClickable(true); 
         isOpen = true; 
        } 

       } 
      }); 
     } 
} 
+0

您正在使用片段,因此您無法在onCreate中綁定您的視圖。在onCreateView中執行並首先對佈局進行膨脹(對碎片生命週期進行一些研究) – Hmm

+0

請編輯您的問題以更新或提供其他信息。請不要將它作爲答案發布。 –

0
@Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //For you, you have nothing to do here 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.aide, container, false); 

     fab_plus = (FloatingActionButton) rootView.findViewById(fab_plus); 
     fab_nav = (FloatingActionButton) rootView.findViewById(fab_nav); 
     fab_fb = (FloatingActionButton) rootView.findViewById(fab_fb); 
     fab_twitte = (FloatingActionButton) rootView.findViewById(fab_twitte); 

     return rootView; 
    } 

@Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     FabOpen = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fab_open); 
     FabClose = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fab_close); 
     FabClockwise = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotation_clock); 
     FabantiClockwise = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotation_anticlock); 

     fab_plus.setOnClickListener(new View.OnClickListener() { 


      @Override 
      public void onClick(View v) { 

       if (isOpen) { 
        fab_nav.startAnimation(FabClose); 
        fab_fb.startAnimation(FabClose); 
        fab_twitte.startAnimation(FabClose); 
        fab_plus.startAnimation(FabantiClockwise); 
        fab_nav.setClickable(false); 
        fab_fb.setClickable(false); 
        fab_twitte.setClickable(false); 
        isOpen = false; 
       } else { 
        fab_nav.startAnimation(FabOpen); 
        fab_fb.startAnimation(FabOpen); 
        fab_twitte.startAnimation(FabOpen); 
        fab_plus.startAnimation(FabClockwise); 
        fab_twitte.setClickable(true); 
        fab_nav.setClickable(true); 
        fab_fb.setClickable(true); 
        isOpen = true; 
       } 

      } 
     }); 
    } 
+0

沒有工作Bro 錯誤getApplicationContext() –

+0

這個答案是誤導,你沒有回答這個問題。加上你的代碼是容易出錯的,getApplicationContext()應該是getActivity() – Remario

+0

我沒有注意到這一點,用getContext()代替它 – Hmm

0
public class frag_aide extends Fragment { 

    FloatingActionButton fab_nav, fab_fb, fab_twitte, fab_plus; 
    Animation FabOpen, FabClose, FabClockwise, FabantiClockwise; 

    boolean isOpen = false; 

    @Override 
    public void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //For you, you have nothing to do here 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.aide, container, false); 

     fab_plus = (FloatingActionButton) rootView.findViewById(fab_plus); 
     fab_nav = (FloatingActionButton) rootView.findViewById(fab_nav); 
     fab_fb = (FloatingActionButton) rootView.findViewById(fab_fb); 
     fab_twitte = (FloatingActionButton) rootView.findViewById(fab_twitte); 

     return rootView; 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

     FabOpen = AnimationUtils.loadAnimation(getActivity(), R.anim.fab_open); 
     FabClose = AnimationUtils.loadAnimation(getActivity(), R.anim.fab_close); 
     FabClockwise = AnimationUtils.loadAnimation(getActivity(), R.anim.rotation_clock); 
     FabantiClockwise = AnimationUtils.loadAnimation(getActivity(), R.anim.rotation_anticlock); 
     fab_plus.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       if (isOpen) { 
        fab_nav.startAnimation(FabClose); 
        fab_fb.startAnimation(FabClose); 
        fab_twitte.startAnimation(FabClose); 
        fab_plus.startAnimation(FabantiClockwise); 
        fab_nav.setClickable(false); 
        fab_fb.setClickable(false); 
        fab_twitte.setClickable(false); 
        isOpen = false; 
       } else { 
        fab_nav.startAnimation(FabOpen); 
        fab_fb.startAnimation(FabOpen); 
        fab_twitte.startAnimation(FabOpen); 
        fab_plus.startAnimation(FabClockwise); 
        fab_twitte.setClickable(true); 
        fab_nav.setClickable(true); 
        fab_fb.setClickable(true); 
        isOpen = true; 
       } 

      } 
     }); 
    } 
} 
+0

請編輯您的問題更新或提供更多信息。請不要將它作爲答案發布。 –

+0

@xlm請不要編輯不是答案的答案。你已經清除了我的非答案標誌。 –