android fragment show,android – 我得到一个错误“方法show(FragmentManager,String)”

我得到一个错误“方法show(FragmentManager,String)在类型DialogFragment不适用于参数(FragmentManager,String)”

请任何人帮助我。

package com.example.test1;

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

import android.view.View;

import android.support.v4.app.DialogFragment;

import android.support.v4.app.Fragment;

import android.support.v4.app.FragmentManager;

import android.support.v4.app.FragmentActivity;

public class MainActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

public void click(View view) {

DialogFragment newFragment = new FireMissilesDialogFragment();

newFragment.show(getFragmentManager(), "missiles");

}

public boolean onCreateOtionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.activity_main, menu);

return true;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用FragmentDialog弹窗时,如果弹窗被隐藏的时候出现了"received Fragment#onDestory() callback and Fragment # mFragmentManager is null"的错误,通常是因为在弹窗隐藏时没有正确地处理FragmentManager的引用所导致的。为了避免这个问题,可以自定义一个继承DialogFragment的类,并重写一些方法,增加新的show/hide方法。 首先,我们需要自定义一个继承DialogFragment的类,例如MyDialogFragment,并在其中添加一个成员变量mFragmentManager来保存FragmentManager的引用,代码如下: ``` public class MyDialogFragment extends DialogFragment { private FragmentManager mFragmentManager; @Override public void onAttach(Context context) { super.onAttach(context); mFragmentManager = getActivity().getSupportFragmentManager(); } @Override public void onDetach() { super.onDetach(); mFragmentManager = null; } } ``` 接下来,我们需要重写DialogFragment的show和dismiss方法,以确保在弹窗显示和隐藏时能够正确地处理FragmentManager的引用。代码如下: ``` public class MyDialogFragment extends DialogFragment { private FragmentManager mFragmentManager; @Override public void onAttach(Context context) { super.onAttach(context); mFragmentManager = getActivity().getSupportFragmentManager(); } @Override public void onDetach() { super.onDetach(); mFragmentManager = null; } @Override public void show(FragmentManager manager, String tag) { if (mFragmentManager != null) { mFragmentManager.executePendingTransactions(); } super.show(manager, tag); } @Override public void dismiss() { if (mFragmentManager != null) { mFragmentManager.executePendingTransactions(); } super.dismiss(); } public void showAllowingStateLoss(FragmentManager manager, String tag) { if (mFragmentManager != null) { mFragmentManager.executePendingTransactions(); } super.showAllowingStateLoss(manager, tag); } public void hide() { if (mFragmentManager != null) { mFragmentManager.executePendingTransactions(); } super.dismiss(); } } ``` 通过重写DialogFragment的show和dismiss方法,并添加新的showAllowingStateLoss和hide方法,我们可以确保在弹窗显示和隐藏时能够正确地处理FragmentManager的引用,从而避免出现"received Fragment#onDestory() callback and Fragment # mFragmentManager is null"的错误。 使用MyDialogFragment时,只需要调用它的show和hide方法即可,例如: ``` MyDialogFragment dialogFragment = new MyDialogFragment(); dialogFragment.show(getSupportFragmentManager(), "tag"); ... dialogFragment.hide(); ``` 通过以上方法,我们可以自定义一个继承DialogFragment的类,并增加新的show/hide方法,避免出现"received Fragment#onDestory() callback and Fragment # mFragmentManager is null"的错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值