2017-03-03 100 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请不要编辑不是答案的答案。你已经清除了我的非答案标志。 –