如何在Fragment中重用onNewIntent()方法?

时间:2014-06-18 01:55:47

标签: android android-intent android-activity android-fragments

这是代码:

public class Fragment1Nasdaq extends Fragment implements LoaderCallbacks<Cursor> {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.nasdaq_fragment, container, false);
    handleIntent(getActivity().getIntent());
    return rootView;

}
}

错误:

protected void onNewIntent(Intent intent) {     
super.onNewIntent(intent);
setIntent(intent);
handleIntent(intent);
}   
private void doSearch(String query){        
................... 
getSupportLoaderManager().restartLoader(0, data, this);
}

我有错误: onNewIntent(intent)是为Fragment

类型定义的

为Fragment

类型定义了setIntent(intent)

为片段

类型定义了getSupportLoaderManager()

我该如何解决?我不知道如何解决它?

2 个答案:

答案 0 :(得分:1)

看起来你把这个方法放在了错误的类中。

如果您需要覆盖onNewIntent(),例如singleTop个活动,则必须将此代码放在Activity课程中,而不是Fragment内。片段没有onNewIntent(),所以无论它的实现如何,你放在那里的方法都不会被调用。

简而言之,请移动:

@Override
protected void onNewIntent(Intent intent) {     
    super.onNewIntent(intent);
    setIntent(intent);
    handleIntent(intent);
} 

进入您的活动。在覆盖方法时始终放置@Override注释,它将帮助您检测不正确的覆盖(例如此异常覆盖)。

答案 1 :(得分:0)

您无法在片段中调用super.onNewIntent(intent);getSupportLoaderManager().restartLoader(0, data, this);,从而产生该错误。如果您想设置意图,则可以通过获取onCreate并设置其activityIntent中调用它。

<强>样品:

getActivity().setIntent(newIntent);