似乎是许多解决方案的常见问题,但我没有成功解决它。
对findViewById的所有调用都是成功的,除了创建expandableListview的调用。它似乎取决于设备。它适用于Android Studio,也适用于Moto E 4G(5.0.2),但不适用于三星Galaxy Tab 8.0(5.1.1)。
可以在github上找到完整的项目: https://github.com/JohanDegraeve/helpdiabetes-android 出现问题的模块是https://github.com/JohanDegraeve/helpdiabetes-android/blob/master/app/src/main/java/com/hippoandfriends/helpdiabetes/Show/Food/ShowSelectedFood.java 如果有人可以克隆项目并尝试解决这个问题,那将非常有用。
这里创建expandablelistview的onCreate方法返回null。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View contentView = LayoutInflater.from(getParent()).inflate(
R.layout.show_selected_food, null);
setContentView(contentView);
// track we come here
ActivityGroupMeal.group.parent
.trackPageView(TrackingValues.pageShowSelectedFood);
expandOrNotDBAdapater = new DbAdapter(this);
expandOrNotDBAdapater.open();
functions = new Functions();
mCalendar = Calendar.getInstance();
btDelete = (Button) findViewById(R.id.buttonDelete);
btSaveTemplate = (Button) findViewById(R.id.buttonSaveAsTemplate);
btLoadTemplate = (Button) findViewById(R.id.buttonLoadTemplate);
btAddSelectedFoodToTracking = (Button) findViewById(R.id.buttonAddSelectedFoodToTracking);
btBack = (Button) findViewById(R.id.buttonBack);
btBack.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
ActivityGroupMeal.group.back();
}
});
expandableListview = (ExpandableListView) findViewById(R.id.expandableListview);
saveFoodAmount = false;
fInsulineRatio = 0f;
fCorrectionFactor = 0f;
fCalculatedInsulineAmount = 0f;
dbHelper = new DbAdapter(this);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
adapter = new CustomExpandableListAdapter(this,
ActivityGroupMeal.group.getFoodData().dbFontSize,
metrics.densityDpi);
listOfSelectedFood = new ArrayList<DBSelectedFood>();
registerForContextMenu(getListView());
btAddSelectedFoodToTracking.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
onClickAddSelectedFoodToTracking();
}
});
btDelete.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// track we come here
ActivityGroupMeal.group.parent.trackEvent(
TrackingValues.eventCategoryMeal,
TrackingValues.eventCategoryMealDeleteSelectedFood);
onClickDeleteAll(v);
}
});
btSaveTemplate.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// track we come here
ActivityGroupMeal.group.parent.trackEvent(
TrackingValues.eventCategoryMeal,
TrackingValues.eventCategoryMealSaveTemplate);
onClickSaveAsTemplate(v);
}
});
btLoadTemplate.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// track we come here
ActivityGroupMeal.group.parent.trackEvent(
TrackingValues.eventCategoryMeal,
TrackingValues.eventCategoryMealLoadTemplate);
onClickLoadTemplate(v);
}
});
expandableListview
.setOnGroupExpandListener(new OnGroupExpandListener() {
public void onGroupExpand(int groupPosition) {
setExpand(1);
}
});
expandableListview
.setOnGroupCollapseListener(new OnGroupCollapseListener() {
public void onGroupCollapse(int groupPosition) {
setExpand(0);
}
});
}
答案 0 :(得分:0)
解决
实际上在平板电脑上,在缺少ID的地方使用了另一种布局