例外「指定された子にはすでに親がいます」の解決方法。removeViewを呼び出す必要があります" の解決方法(ソースコード付き例)
2022-02-17 09:43:57
で アンドロイド の開発プロセスでは、時々、異なる状況で同じ問題に遭遇することがあります。
java.lang.IllegalStateException The specified child already has a parent. You must call removeView() on the child's parent first.
不正な状態例外としても知られており、この特定の
子
がすでにあります。
親
これに親を追加する必要があります
親
の最初の呼び出しは
removeView()
メソッドを使用して、コンテンツを継続することができます。ここで明らかになるのは、この
子
は
表示
以下は、子 (
子
子)。
表示
は親に依存する必要があります (
親
<スパン
表示
これを利用する場合
子
子プロセスがある場合は
親
また、単に
新しいプロジェクトを作成し、レイアウトファイルには TextView と イメージビュー レイアウトはリニアで(後でソースコードを参照)、結果はテキストと画像になります。
での 活動内容 の onCreate() メソッドを使用する場合、通常、次のような方法でレイアウトファイルを使用します。 main.xml .
setContentView(R.layout.main);
ここで、今日説明する例外を説明すると、レイアウトファイルの別の使い方として、上のコードの行をコメントアウトして、次のコードに置き換えることができます。
//Infalterオブジェクトを取得する
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
LinearLayout parent = (LinearLayout) inflater.inflate(R.layout.main, null);
ImageView child = (ImageView)parent.findViewById(R.id.child);
setContentView(parent);
レイアウトインフレータ は、レイアウトフィラークラスで、分からない人は自分で調べるか、機会があればブログで紹介し、その後 main.xml ファイル名 インフレート について リニアレイアウト ファイルを作成し 子 である。 イメージビュー . 次に setContentView(parent) このレイアウトを設定する main.xml が表示され、これは s etContentView(R.layout.main) このコードも同じ効果を得ることができます。
以下の操作で例外が発生するようになったので、注意してください。
setContentView(child);
つまり、上からsetContentView(parent)
で
親
で置き換える
子
. 例外として、次のスクリーンショットを参照してください。
そして、この例外の時点で、もう1つの 親 の中で removeView() . ここでは、コマンドに従って、新しいビューを setContentView(child) というフレーズを追加する前に parent.removeView(child) を呼び出すことはありません。 setContentView(child) を呼び出すと、例外は発生しませんが、画像が表示されるだけとなります。 setContentView(親) はテキストコンテンツのみを表示します。 子プロセスの削除 外れている
コードは以下の通りです。
関連
-
AndroidでAttempt to invoke virtual method... on null object referenceの例外が発生する。
-
gitlab 設定エラー。リモートリポジトリから読み込めなかったか、ホストキーの検証に失敗しました。
-
アンドロイドプロジェクトのパッケージングにgradleを使用する際の問題点
-
アンドロイドスタジオのエラーを解決する --> Error:(1, 0) id 'com.android.application' を持つプラグインが見つかりません。
-
エラー:未宣言の識別子(AS)の使用
-
repo: コマンドが見つかりません
-
アンドロイドのエリプサイズを使用する
-
Androidカスタムドロップダウンリストボックスコントロール
-
Androidのカラーグラデーション実装のまとめ
-
Android TextViewは、テキスト内容が表示省略記号を超えているかどうかを判断する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java.lang.NullPointerException: NULLオブジェクト参照で仮想メソッド......を呼び出そうとしました。
-
Androidで発生した問題、解決策とヒント
-
RuntimeException: アクティビティを開始できません ComponentInfo solution
-
アンドロイドスタジオでJunitのエラー問題を解決する
-
android block certificate validation CertPathValidatorException: 認証パスのトラストアンカーが見つかりません
-
android bluetooth--Bluetooth on、検索、ペアリング、接続
-
アンドロイドスタジオ学習入門
-
Android Studio常见错误之:Rendering Problems/The following classes could not be instantiated
-
Android.support.v7.widget.Toolbar が見つかりませんでした。
-
AndroidManifest.xmlの最も完全な詳細な説明