質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

671閲覧

【AndroidStudio】ButterKnifeで呼んでいるViewを変更したら IllegalStateException

azuapricot

総合スコア2341

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2019/08/07 08:36

困っているのが下記コードとなります。

事象としましては、ButterKinfe.inject で読み込んでいるレイアウトに変更を加えたところ、
変更前に読み込まれていた ID が見つかりませんというようなエラーが消えなくなってしまいました。

Fragment (View呼び出し部分)

Java

1@Override 2public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 3 View view = inflater.inflate(R.layout.grouplayout, null); 4 ButterKnife.inject(this, view); 5 6  DatabaseAccess db = new DatabaseAccess(getActivity()); 7  List<String> groupNames = db.getGroupNames(); 8  AutoCompleteTextView view = (AutoCompleteTextView)view.findViewById(R.id.groupNames); // 新しくこいつを読み込みたい 9}

変更前のレイアウト(grouplayout.xml)

XML

1<!-- 省略 --> 2 3<Spinner 4 android:id="@+id/group" 5 android:layout_width="match_parent" 6 android:layout_height="wrap_content"/> 7 8<!-- 省略 -->

変更後のレイアウト(grouplayout.xml)

Spinner から AutoCompleteTextViewに変えて、 IDを group から groupNames に変更

XML

1<!-- 省略 --> 2 3<com.cli.lib.AutoCompleteTextView 4 android:id="@+id/groupNames" 5 android:layout_width="match_parent" 6 android:layout_height="wrap_content" 7 android:inputType="text"/> 8 9<!-- 省略 -->

自動生成されるViewInjector.javaとやら

Java

1@Override public void inject(final Finder finder, final T target, Object source) { 2 // 一部省略 3 View view; 4 //↓この2行が消しても消してもビルドするたびに生成される (groupNamesは生成されない) 5 view = finder.findRequiredView(source, 2131492990, "field 'group'"); 6 target.group = finder.castView(view, 2131492990, "field 'group'"); 7}

エラー文

java.lang.RuntimeException: Unable to start activity ComponentInfo{ ~ Activity}:java.lang.IllegalStateException: Required view 'group' with ID 2131492990 for field 'group' was not found. If this view is optional add '@Optional' annotation.

エラー解決のために試したこと

・ビルド > クリーンプロジェクト

・AutoCompleteTextView の IDを groupに変えて実行 → CastException
→ AutoCompleteTextView は Spinner にCastできません 云々...

・ViewInjector や R.java から groupに関するIDなどを消してクリーン

物凄いわかりにくい質問で大変申し訳ないのですが、
もしお時間ある方で、解決方法に心当たりのある方いらっしゃいましたらご教授頂けると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ごめんなさい、自己解決できました・・・

別のフラグメントで

Java

1@InjectView(R.id.group) 2TextView group;

って記述しているところがありました・・・。

groupに関する記述を再度洗い出して書き換えたところ無事にエラーがなくなりました・・・。

くそう・・・単純だった・・・。2時間返してほしい・・・。

投稿2019/08/07 08:57

azuapricot

総合スコア2341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問