何年も機能しているアプリがあります。そのため、最新かつ最高の機能をすべて使用しているわけではありません。
現在のバージョンの Android では、EditText コントロールにテキストがあり、それをロングタッチすると、アプリが次のようにクラッシュすることがわかりました。
11-13 14:26:20.720: E/AndroidRuntime(1253): FATAL EXCEPTION: main
11-13 14:26:20.720: E/AndroidRuntime(1253): java.lang.IllegalStateException: ActionBarContextView can only be used with android:layout_width="match_parent" (or fill_parent)
11-13 14:26:20.720: E/AndroidRuntime(1253): at com.android.internal.widget.ActionBarContextView.onMeasure(ActionBarContextView.java:325)
11-13 14:26:20.720: E/AndroidRuntime(1253): at android.view.View.measure(View.java:12603)
11-13 14:26:20.720: E/AndroidRuntime(1253): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4677)
11-13 14:26:20.720: E/AndroidRuntime(1253): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369)
11-13 14:26:20.720: E/AndroidRuntime(1253): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660)
xml または java ファイルのどこにも ActionBarContextView への参照がなく、テーマも使用していないことはわかっています。これらの EditText コントロールは、ダイアログではなくアクティビティにあります。
ルート レイアウトとしてカスタム レイアウトがあり、それがメソッドの場合、クラッシュ スタック トレースは最終的に 1 つに戻ります。
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int count = getChildCount();
for (int i = 0; i < count; i++) {
final View child = getChildAt(i);
measureChild(child, widthMeasureSpec, heightMeasureSpec);
}
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.getSize(heightMeasureSpec));
}
どこを見るべきか、何を変更すべきかについてのアイデアはありますか?