对超类的onViewCreated()方法的调用不会在片段的onViewCreated()方法中执行

时间:2016-08-29 17:44:33

标签: java android android-fragments fragment android-listfragment

我目前面临片段问题。 如你所知,在fragment的onViewCreated()方法中,第一个语句是对超类的onViewCreated()方法的调用:

String

但是,上面的语句没有执行,因此,该语句下面的代码根本没有执行,我的应用程序一直在崩溃。我不知道如何解决这个问题。 任何形式的帮助都将非常感激。

提前致谢!

super.onViewCreated(view, savedInstanceState);

Logcat输出:

public class FragmentAddWatchedTVShow extends ListFragment {

private Activity context;

public void setContext(Activity context) {
    this.context = context;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.frag_add_watched_tvshow, container, false);
    return view;
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    Log.d(AIntroductionScreen.DEBUGTAG, "Entered in onViewCreated");
//The above log statement is executed but after that nothing gets executed

    super.onViewCreated(view, savedInstanceState);/***THIS STATEMENT IS NOT EXECUTED***/

        /***None of the code below this gets executed***/

    String[] optionsString = getResources().getStringArray(R.array.watched_tvshow_options);

    List<AddOptionsItem> optionsList = new ArrayList<AddOptionsItem>();

    for (int i = 0; i < optionsString.length; i++){
        optionsList.add(new AddOptionsItem(optionsString[i]));          
    }

    AdapterAddWatchedTVShow adapter = new AdapterAddWatchedTVShow(context, optionsList);

    setListAdapter(adapter);


}

1 个答案:

答案 0 :(得分:1)

我终于找到了解决问题的方法!

根据ListFragment信息here

  

ListFragment具有由单个列表视图组成的默认布局。但是,如果需要,可以通过从onCreateView(LayoutInflater,ViewGroup,Bundle)返回自己的视图层次结构来自定义片段布局。为此,您的视图层次结构必须包含一个ID为“@android:id / list”的ListView对象(如果它在代码中则列出)

在我的视图层次结构中,我有一个ListView对象,但不是给该对象id:@android:id / list,如上所述,我为该对象分配了一个全新的id。因此,抛出了运行时异常,并且应用程序每次都崩溃。 无论如何,谢谢所有立即回应并试图帮助我的人:)