findViewById возвращает null на планшете Samsung

кажется, это частая проблема со многими предлагаемыми решениями, но мне не удается ее решить.

все вызовы findViewById успешны, за исключением того, где создается expandableListview. И это, похоже, зависит от устройства. Он работает в Android Studio, также на Moto E 4G (5.0.2), но не на Samsung 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
Если кто-то может клонировать проект и попытаться исправить это, это было бы очень полезно.

Здесь метод onCreate, creating expandablelistview возвращает 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);
                }
            });
}

1 ответ

  1. разрешенный

    на самом деле на планшете использовался другой макет, где отсутствовал идентификатор