コードにTextView title, darkThemeTitle = findViewById(R.id.title); findViewById(R.id.darkThemeTitle);
を使用するとします。
この行TextView title, darkThemeTitle = (TextView) findViewById(R.id.title);
は変数「タイトル」が。だからtitle
を初期化されていない可能性があることを示したコードでを初期化することはありません。
そしてfindViewById(R.id.tab_layout);
は、あなたのコード内でビューを返します.ANDそれはあなたのコードでdarkThemeTitle
を返すことはありません。
あなたはこのようにすることができます。
TextView title = (TextView) findViewById(R.id.title); TextView darkThemeTitle = (TextView) findViewById(R.id.darkThemeTitle);
別の方法
TextView title = null, darkThemeTitle = null;
TextView[] textViews = {title, darkThemeTitle};
Integer[] ids = {R.id.title, R.id.darkThemeTitle};
for (int i = 0; i < textViews.length; i++) {
textViews[i] = (TextView) findViewById(ids[i]);
}
ただ興味がありますが、なぜそれは1行で必要ですか?倍数ではなく単一行の主な違いは何ですか? –
コードの量を最小限にするだけです – flash76
コードをメソッドに分割するには、メインコードの外側でfindview-codeを移動し、折り畳みを使用します。私は垂直方向と比較して水平方向のコーディングの利点を理解できません。あなたの画面とIDEは垂直に設計されています。私が実際にお勧めできるもの - 動的バインディングを使用してください、詳細は私の答えを見てください。 –