在片段android上添加动态内容

时间:2015-12-18 16:03:31

标签: android android-fragments

我是碎片的新手,现在他们对我有点困惑。 我已经阅读了很多并且实际上使用this tutorial

构建了一个测试应用程序

我能够添加更多标签等等。但我不想显示静态 内容(xmls)。我希望能够修改UI添加列表视图,使用asynctasck加载json数据等等,但我做的第一次尝试失败了。

所以在Tab1:

public class Tab1 extends Fragment {

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

}

我尝试声明textview并使用settext编辑它的文本但是 我遇到了崩溃,并且findviewbyid也不可用作方法。 当我输入getView()。findViewById但它没有抛出错误 那不是问题。

片段是否有限或与传统活动有很大不同? 我是否需要永不结束自定义 为了获得listview加载?

谢谢。

2 个答案:

答案 0 :(得分:0)

Fragment没有活动方法。

如果要使用findViewById方法,则应使用类字段。

public class Tab1 extends Fragment {

private View mView;

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

@Override 
public void onCreate() {
    // here you can use `findViewById` method via `mView` variable
    mView.findViewById(YOUR_VIEW_ID);
}
}

答案 1 :(得分:0)

片段中基本上有2种方法可供使用  1. onCreateView  2. onViewCreated

第一个用于扩充片段的布局 第二个用于查找布局中使用的所有视图。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.tab_1, container, false);
    return v;

}



@Override
public void onViewCreated(View v){
    mTextView  = (TextView) v.findViewById(R.id.my_text_view);
    mTextView.setText("Hello, World!");

}