getParent возвращает неправильную ViewGroup
-
20-12-2019 - |
Вопрос
При выполнении приведенного ниже кода я могу проверить в своем 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"
Не связан с StackOverflow