Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.IllegalStateException:未附加到android中的活动问题的片段_Java_Android_Android Fragments - Fatal编程技术网

java.lang.IllegalStateException:未附加到android中的活动问题的片段

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

在调用片段用法的活动时,我遇到了一个奇怪的问题。我犯了这样的错误

java.lang.IllegalStateException:片段ScoreFragment{ee2b833 id=0x7f0e0198}未连接到活动

第146行。我的片段代码有错误,如下所示

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疯狂