刚遇到这个问题时网上搜了好多 回答基本都是一样
原因是这样的Fragment在Activity中加载前就调用了,获取资源的一些方法
在Fragment中有 isAdded()这个方法,只需要在加载资源前进行判断即可:
if(isAdded()){
popupWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.back));
}
像我这样必须加背景的加判断跳过去是不行的,后来突然想到使用Application来获取,试了下果然可行。
先写个Application如下:(粘贴可用)
package com.action;
import android.app.Application;
import android.content.Context;
/**
* 定义全局Context
*
*/
public class MyApplication extends Application {
private static Context context;
@Override
public void onCreate() {
context = getApplicationContext();
}
public static Context getContext() {
return context;
}
}
然后直接在获取资源的方法前加上就可以
popupWindow.setBackgroundDrawable(MyApplication.getContext().getResources().getDrawable(R.drawable.back));