java.lang.IllegalStateException:未附加到android中的活动问题的片段
在调用片段用法的活动时,我遇到了一个奇怪的问题。我犯了这样的错误 java.lang.IllegalStateException:片段ScoreFragment{ee2b833 id=0x7f0e0198}未连接到活动 第146行。我的片段代码有错误,如下所示java.lang.IllegalStateException:未附加到android中的活动问题的片段,java,android,android-fragments,Java,Android,Android Fragments,在调用片段用法的活动时,我遇到了一个奇怪的问题。我犯了这样的错误 java.lang.IllegalStateException:片段ScoreFragment{ee2b833 id=0x7f0e0198}未连接到活动 第146行。我的片段代码有错误,如下所示 if(mPageFlag.equalsIgnoreCase(getString(R.string.winners))){ 我的完整代码如下所示 @Override public void onCreate(Bundle savedIn
if(mPageFlag.equalsIgnoreCase(getString(R.string.winners))){
我的完整代码如下所示
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mPageFlag = getArguments().getString(ARG_PAGE_FLAG);
}
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if(isVisibleToUser && !mIsPageLoaded){
mContext = getActivity();
mIsPageLoaded = true;
if(mPageFlag.equalsIgnoreCase(getString(R.string.winners))){
new getcontestscorewinners(mContext).execute();
}else{ //
new getcontestscorewinnersNew(mContext).execute();
}
}
}
public class getcontestscorewinners extends AsyncTask<String, Void, String> {
boolean response = false;
private Context mContext;
public getcontestscorewinners(Context context) {
mContext = context;
}
@Override
protected void onPreExecute() {
progress = ProgressDialog.show(mContext, "Processing...",
"Please wait....");
}
@Override
protected String doInBackground(String... params) {
NetworkTask.getContestScoreWinners(winnerHandler);
return "";
}
@Override
protected void onPostExecute(String result) {
}
@Override
protected void onProgressUpdate(Void... values) {
}
}
@覆盖
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
如果(getArguments()!=null){
mPageFlag=getArguments().getString(ARG\u PAGE\u标志);
}
}
@凌驾
public void setUserVisibleHint(布尔值isVisibleToUser){
super.setUserVisibleHint(isVisibleToUser);
如果(isVisibleToUser&!mIsPageLoaded){
mContext=getActivity();
mIsPageLoaded=true;
if(mPageFlag.equalsIgnoreCase(getString(R.string.winners))){
新建GetContentScoreWinners(mContext.execute();
}否则{//
新建GetContentScoreWinnersNew(mContext.execute();
}
}
}
公共类GetCompetingScoreWinners扩展异步任务{
布尔响应=假;
私有上下文;
公共GetCompetingScoreWinners(上下文){
mContext=上下文;
}
@凌驾
受保护的void onPreExecute(){
progress=ProgressDialog.show(mContext,“处理…”),
“请稍候……”;
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
NetworkTask.GetCompetingScoreWinners(winnerHandler);
返回“”;
}
@凌驾
受保护的void onPostExecute(字符串结果){
}
@凌驾
受保护的void onProgressUpdate(void…值){
}
}
如果有人能帮我摆脱困境,请告诉我。谢谢。尝试使用
如果片段当前已添加到其活动中,则返回true
因此,您的代码应该如下所示:
if(isAdded() && mPageFlag.equalsIgnoreCase(getString(R.string.winners))){
setUserVisibleHint
处于活动或片段中?将mPageFlag
添加到Activity@ρцσѕρєK中的片段和mPageFlag中,我将它添加到create like public void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);if(getArguments()!=null){mPageFlag=getArguments().getString(ARG PAGE(FLAG)}您的Context
mContext
为空。@KNeerajLal根据您的要求,我应该使用什么?可能重复:这是当前答案。谢谢@shadygone疯狂