2 u013986975 u013986975 于 2015.06.19 17:22 提问

自定义的Dial显示不出来,求解答! 5C

这是一个类似于京东客户端首页的界面。

需求: 对用户的账号进行判断,当它的账号被封禁时,用户点击这个页面的任意礼品类型列表,
会弹出一个自定义的Dialog,呈现给用户,账号已被封禁。
问题:现在用户的状态是冻结。。。自定义的Dialog始终弹不出来。(自定义的Dialog没有问题,已Demo测试过, 我怀疑是不是这个类的调用的问题)
求大神解答 !

/**

  • 礼品部分activity
    */
    public class GiftActivity extends BaseActivity {

    /** 礼品类型列表 */
    private final String giftListClass = GiftListFragment.class.getName();
    /** 礼品详情 界面 */
    private final String giftDetailClass = GiftDetailFragment.class.getName();
    /** 礼品兑换界面 */
    private final String giftChargeClass = GiftChargeFragment.class.getName();
    private Fragment mFragment;
    protected static FragmentActivity mmContext;
    private static Handler mHandler;
    private static CustomWebView mWebView;
    @Override
    protected void onCreate(Bundle arg0) {
            super.onCreate(arg0);
            setContentView(R.layout.layout_gift);
            initVariable();
    }
    
    /**
     * 初始化变量
     */
    private void initVariable() {
            int type = getIntent().getIntExtra("type", 0);
            switch (type) {
            case 0:
                    initView(giftListClass, null);
                    break;
            case 1:
                    initView(giftDetailClass, getIntent().getExtras());
                    break;
            case 2:
                    initView(giftChargeClass, getIntent().getExtras());
                    break;
            default:
                    break;
            }
    }
    
    /**
     * 初始化布局
     */
    private void initView(String className, Bundle bundle) {
            if (null != mContext) {
                    FragmentTransaction ft = getSupportFragmentManager()
                                    .beginTransaction();
                    mFragment = Fragment.instantiate(mContext, className, bundle);
                    ft.add(R.id.layout_gift_fragment_container, mFragment, className);
                    ft.commit();
            }
    }
    
    /**
     * 礼品列表
     * 
     * @param context
     */
    public static void start4GiftList(Context context) {
            start(context, 0, null);
    }
    
    /**
     * 礼品详情
     * 
     * @param context
     */
    public static void start4GiftDetail(final Context context,final GiftType value) {
            // 增加一个判断的方式,当用户未登陆的情况下,进一步点击商品时调出登陆层
            if (!HZApplication.get().isLogin()) {
                    Intent intent = new Intent(context, AccountActivity.class);
                    context.startActivity(intent);
    
            } else {
                    // 当出现异常订单时,商品不可进一步兑换,出现封禁的状态,需要申请解禁。
                    NetworkController.getInstance(HZApplication.get()).getUserinfo(
                                    new NetworkCallBack() {
    
                                            @Override
                                            public void response(String response) {
                                                    UserInfo mUserInfo = UserInfo.parser(response);
    
                                                    int mstatus = mUserInfo.status;
    
                                                    if (0 == mstatus) {
                                                            // 封禁
                                                            //banned();
                                                    } else if (1 == mstatus) {
                                                            // 正常 不做操作                                                
                                                            Bundle bundle = new Bundle();
                                                            bundle.putSerializable("data", value);
                                                            start(context, 1, bundle);
    
                                                    } else if (2 == mstatus) {
                                                            // 1、冻结                                                                
                                                            Freeze();
                                                    }
                                            }
                                            @Override
                                            public void error(int errorCode, String errorLog) {
    
                                            }
                                    });
    
            }
    }
    
    /**
     * 礼品兑换
     * 
     * @param context
     */
    public static void start4GiftCharge(Context context, GiftType value) {
            Bundle bundle = new Bundle();
            bundle.putSerializable("data", value);
            start(context, 2, bundle);
    
    }
    
    /**
     * 冻结状态
     */
    private static void Freeze() {
    
            CustomDialog.Builder builder = new CustomDialog.Builder(mmContext);
            builder.setTitle("兑换冻结");
            builder.setMessage("您的账号存在获取收入的异常操作,兑换功能被暂时冻结,冻结期间,获取经验值不受影响");        
            builder.setPositiveButton("申请解冻", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                            //设置你的操作事项
                            //Toast.makeText(getApplicationContext(),"Hi", Toast.LENGTH_SHORT).show();
    
                    }
            });
    
            builder.setNegativeButton("了解规则",
                            new android.content.DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int which) {
                                            //Toast.makeText(getApplicationContext(),"Hi。。。。。", Toast.LENGTH_SHORT).show();
                                    }
                            });        
    
            builder.create().show();
    
    }
    
    /**
     * 启动
     * 
     * @param context
     *            上下文
     * @param type
     *            显示类型 0==礼品列表 1==礼品详情 2==礼品兑换 3==
     */
    private static void start(Context context, int type, Bundle bundle) {
            Intent intent = new Intent(context, GiftActivity.class);
            intent.putExtra("type", type);
            if (null != bundle) {
                    intent.putExtras(bundle);
            }
            context.startActivity(intent);
    }
    

    }

2个回答

hjhjw1991
hjhjw1991   2015.06.19 21:52

查看一下mmContext,它是否正确指向了UI Activity?(你的代码中,前面成员声明是mmContext,但初始化布局那里是mContext。但我估计是粘代码时候的问题,不然这会报error)
另外可以试着将dialog的调用放到异步任务中执行。

u013986975
u013986975   2015.06.20 14:26

这个里面的mmContext是我自己定义出来的,mContext是基类的,你看看,我也纳闷,不知道怎么做。。。反正没报错。

  • 应用程序Activity的基类
    */
    public class BaseActivity extends FragmentActivity {
    private int currentApiVersion = 0;
    protected boolean isLoading = false;
    protected FragmentActivity mContext = this;
    protected boolean enabled = false;

    @Override
    protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
    currentApiVersion = android.os.Build.VERSION.SDK_INT;
    HZApplication.get().addActivity(this);
    }

=========================相当于我这个类继承BaseActivity=====================
*/
public class GiftActivity extends BaseActivity {

/** 礼品类型列表 */
private final String giftListClass = GiftListFragment.class.getName();
/** 礼品详情 界面 */
private final String giftDetailClass = GiftDetailFragment.class.getName();
/** 礼品兑换界面 */
private final String giftChargeClass = GiftChargeFragment.class.getName();
private Fragment mFragment;
protected static FragmentActivity mmContext;

private static Handler mHandler;

private static CustomWebView mWebView;

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);
    setContentView(R.layout.layout_gift);
    initVariable();
}

麻烦你再帮我分析一下context.谢谢!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
自定义View显示不出来
想封装一个Banner的View,但是ViewPager怎么都显示不出来, public class BannerView extends FrameLayout { private View mRootView; private ViewPager mBannerViewPager; public BannerView(Context context)
为什么自定义控件无法显示
为什么自定义控件无法显示 自定义控件不显示 忘记在初始化内部元素之后进行 addView() 操作 忘记设置子控件 LayoutParams 宽高 子控件被其它控件所遮盖 自定义控件预览layout 预览layout布局 at android.view.ViewGroup.resetResolvedLayoutDirection(ViewGroup.java:6081)
Android - 自定义View不显示
说明: 自定义了一个LinearLayout,显示不出来 原因是必须有 public ManDaoH5View(Context context, AttributeSet attrs) { 这个方法是自定义LinearLayout初始化调用的方法,LinearLayout自己的属性也必须写再这个方法里面否则属性也会不起作用,例如:setOrientation(VERTICAL);
配流01—DIAL算法(经典)
《基于LOGIT的STOCH配流法——dial算法》 运行环境:MATLAB 8.3.0.532 作者信息:兰州交通大学 刘志祥 QQ:531548824 说明:本程序用于进行静态配流,缺点是有效路径的界定太过严,请读者根据需要进行修改。
在根据视频实现拿到推荐歌单的时候,发现显示404报错,之后找到了相对应的解决方法
按着教学视频的那取数据是这样子写的,可是运行之后就会出现找不到,显示如下报错那时候我知道是路径错了,可是反复查看代码,看多一遍视频实现的步骤,反复几遍都看不出有什么不同。之后再网上搜索看到有一个帖子vue项目用axios请求QQ音乐歌单接口报404错误,求解答?这个帖子这个帖子,接着才按照里面的提示做出相应的修改结果:噔噔噔噔.....拿到数据啦啦啦啦啦!!!QQ音乐...
Android组件复习之基本组件05—时钟组件DigitalClock和AnalogClock
时钟组件DigitalClock和AnalogClock功能和使用及TextClock。 1、时钟UI组件是两个非常简单的组件,DigitalClock本身就集成了TextView—也就是说它本身就是文本框,只是它里面显示的内容是当前时间;AnalogClock则继承了View组件,它重写了View的OnDraw方法,它会在View上显示模拟时钟。 2、DigitalClock和Ana
高德地图自定义marker不显示的问题
用bitmap1 可以显示  bitmap  不能显示    bitmap.recycle();   最后查看发现是这句话引起的..  百度地图加没问题,高德地图加入会不显示
求解答!杂啥也输不出来!
#include using namespace std; int gac(int x,int y); int gcds(int x,int y,int z,int w); //自定义函数的原型(即函数声明) int main() {  int a,b,c,d;  cin>>a>>b>>c>>d;  cout  return 0; } int gac(int x,int
自定义View不能显示?来看看Studio怎么说!
android自定义view不显示
关于自定义View 调用 canvas.drawRect画不出来矩形的原因
因为我理解错了其中参数的意思 canvas.drawRect(left,top,right,bottom,Paint); 以我原来的方式,top-bottom 为负数,画不出来,下图才是其中参数正确的意思。 从这里看的http://blog.csdn.net/fenghuoliuling/article/details/19419019