Вопрос

При выполнении приведенного ниже кода я могу проверить в своем LogCat, что getParent возвращает другую ViewGroup, а затем FrameLayout (он возвращает LinearLayout).Обычно я ожидаю, что getParent вернет макет кадра...

Кто-нибудь знает, почему это происходит?

Джава:

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final Button button = (Button) findViewById(R.id.actionbar_btn);
        if (button.getParent() instanceof FrameLayout) {
            Log.v("TAG", "parent was framelayout");
        } else {
            Log.v("TAG", "parent was no framelayout");
        }

    }

XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#00FF00"
        android:orientation="horizontal" >

        <FrameLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/actionbar_home"
                android:layout_width="33dp"
                android:layout_height="32dp"
                android:background="@drawable/ic_launcher" 
                />


        </FrameLayout>

        .....

    </LinearLayout>

</RelativeLayout>
Это было полезно?

Решение

Не следует ли вам изменить свой R.id.actionbar_btn к R.id.actionbar_home?

Другие советы

Я думаю, что вы получаете неправильный идентификатор для кнопки:

 <Button
                    android:id="@+id/actionbar_home"
                    android:layout_width="33dp"
                    android:layout_height="32dp"
                    android:background="@drawable/ic_launcher" 
                    />


final Button button = (Button) findViewById(R.id.actionbar_btn);
.

"R.id.actionbar_btn" и android:id="@+id/actionbar_home" должен быть такой же

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top