简体   繁体   English

在Android中隐藏显示片段

[英]hide show fragment in android

i have a fragment and want hide and show with a button. 我有一个片段,想用按钮隐藏和显示。 I Use this code : 我使用此代码:

 public class Tablo extends FragmentActivity{
Fragment fg ;
Button click ;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tablo);
    fg = getFragmentManager().findFragmentById(R.id.emojicons);
    click = (Button) findViewbyId(R.id.Button1);
    click.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            FragmentManager fm = getFragmentManager();
            fm.beginTransaction()
                    .setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
                    .show(fg)
                    .commit();
        }
    });

Log Error : 记录错误:

 java.lang.NullPointerException: Attempt to write to field 'int android.app.Fragment.mNextAnim' on a null object reference
        at android.app.BackStackRecord.run(BackStackRecord.java:809)
        at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
        at android.app.FragmentManagerImpl$1.run(FragmentManager.java:452)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:145)
        at android.app.ActivityThread.main(ActivityThread.java:6145)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)

Fragment in Xml : Xml中的片段:

<fragment
    android:id="@+id/emojicons"
    android:layout_width="match_parent"
    android:layout_height="220dp"
    class="ir.m.sh.textsticker.PlusOneFragment"/>

My Fragment : 我的片段:

Android Studio PLusOneFragment

whats wrong ? 怎么了 ?

i want show and hide this fragment and tested all way but ... 我想显示和隐藏此片段并一直进行测试,但是...

I guess that your fragment object is null. 我想您的片段对象为null。 Try like this: 尝试这样:

PLusOneFragment fg ;
Button click ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tablo);
if(savedInstanceState == null)
    fg = new PLusOneFragment();
else
    fg = getFragmentManager().findFragmentById(R.id.emojicons);
click = (Button) findViewbyId(R.id.Button1);
click.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        FragmentManager fm = getFragmentManager();
        fm.beginTransaction()
                .setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
                .show(fg)
                .commit();
    }
});

Or if you want, instead of a PLusOneFragment object you can use a Fragment object and then when initialize it you can initialize it like that: Fragment fg; 或者,如果需要,可以使用Fragment对象代替PLusOneFragment对象,然后在对其进行初始化时像这样进行初始化:Fragment fg; fg = new PLusOneFragment(); fg =新的PLusOneFragment(); (where savedInstanceState is null); (其中savedInstanceState为null);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM