在其他 class 中使用抽象变量
use variable from abstract in other class
我是 java 的新手,android development.I 创建了一个摘要 class 用于在我的 app.I 中显示列表视图,我的想法是将使用公共列表视图仅更改其 adapter.But 我没有得到抽象 class 中定义的列表视图以在扩展 it.Please 的 class 中使用确实帮助我
摘要Class代码
public abstract class GeneralListView extends MasterFragment {
protected ListView listView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.common_list, container, false);
listView = (ListView) view.findViewById(R.id.lv_common_list);
return view;
}
public abstract void initializeList();
public ListView getListView() {
return listView;
}
}
Class 扩展了上面的 class
public class Test extends GeneralListView {
private ListView listView;
@Override
public void initializeList() {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(contextFragment, android.R.layout.activity_list_item, new String[]{"a", "b", "c", "d", "e", "f", "g", "h", "i", "a", "b", "c", "d", "e", "f", "g", "h", "i"});
listView.setAdapter(adapter);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getListView();
initializeList();
}
@Override
public ListView getListView() {
return listView;
}
}
异常
listView.setAdapter(adapter); //null pointer exception
删除
private ListView listView;
和
@Override
public ListView getListView() {
return listView;
}
来自
public class Test extends GeneralListView {
您覆盖了 Test 子类中的 listView 对象,并且使用了该对象而不是 GeneralListView 中的实例。
您能检查一下您是否调用了 onCreateView 方法,因为我只能看到此方法正在初始化 listView 引用。
无需覆盖子 class "Test" class 中的 getListVIew() 并且您不需要私有 ListView listView; "Test" class,
中的属性
要调用 super 中的方法或变量 class 如果您不使用任何具有相同名称的变量,您可以直接调用它 您可以使用 super 关键字调用 listView
super.listView
并使用 super 关键字调用方法 getListView()
super.getListView();
您必须删除
private ListView listView;
声明,否则在构造函数中添加以下内容,
public Test(){
listView = super.getListView;//I assume this would return initialized listview
}
我是 java 的新手,android development.I 创建了一个摘要 class 用于在我的 app.I 中显示列表视图,我的想法是将使用公共列表视图仅更改其 adapter.But 我没有得到抽象 class 中定义的列表视图以在扩展 it.Please 的 class 中使用确实帮助我
摘要Class代码
public abstract class GeneralListView extends MasterFragment {
protected ListView listView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.common_list, container, false);
listView = (ListView) view.findViewById(R.id.lv_common_list);
return view;
}
public abstract void initializeList();
public ListView getListView() {
return listView;
}
}
Class 扩展了上面的 class
public class Test extends GeneralListView {
private ListView listView;
@Override
public void initializeList() {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(contextFragment, android.R.layout.activity_list_item, new String[]{"a", "b", "c", "d", "e", "f", "g", "h", "i", "a", "b", "c", "d", "e", "f", "g", "h", "i"});
listView.setAdapter(adapter);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getListView();
initializeList();
}
@Override
public ListView getListView() {
return listView;
}
}
异常
listView.setAdapter(adapter); //null pointer exception
删除
private ListView listView;
和
@Override
public ListView getListView() {
return listView;
}
来自
public class Test extends GeneralListView {
您覆盖了 Test 子类中的 listView 对象,并且使用了该对象而不是 GeneralListView 中的实例。
您能检查一下您是否调用了 onCreateView 方法,因为我只能看到此方法正在初始化 listView 引用。
无需覆盖子 class "Test" class 中的 getListVIew() 并且您不需要私有 ListView listView; "Test" class,
中的属性要调用 super 中的方法或变量 class 如果您不使用任何具有相同名称的变量,您可以直接调用它 您可以使用 super 关键字调用 listView
super.listView
并使用 super 关键字调用方法 getListView()
super.getListView();
您必须删除
private ListView listView;
声明,否则在构造函数中添加以下内容,
public Test(){
listView = super.getListView;//I assume this would return initialized listview
}