私はまだ Android プログラミングに慣れていないので、この質問はかなり基本的なものです。のような UI コンポーネントが初期化され、ActivityTextView
のメソッドでアクセスされるコード サンプルがインターネット上にたくさんあります。onCreate()
Android Studio を使用して新しいプロジェクトを作成すると、デフォルト設定で、 bring along with itFirstApp
という空のアクティビティがあり、これをすぐに APK にコンパイルしてデバイスにデプロイすると、ヘッダー付きの画面が表示されます」 FirstApp」と「Hello world!」を示す左上の TextView。MainActivity
activity_main
fragment_main
TextView
の ID を指定textview1
してメンバー変数 を作成すると、次のようにアクティビティTextView myTextView;
のメソッドでそれを参照できます(もちろん、コンパイラ エラーは発生しません)。onCreate()
@Override
protected void onCreate (Bundle savedInstanceState)
{
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
myTextView = (TextView) findViewById (R.id.textview1);
myTextView.setText ("Hello tablet!");
if (savedInstanceState == null)
{
getSupportFragmentManager().beginTransaction().add (R.id.container,new PlaceholderFragment()).commit();
}
}
ただし、APK をコンパイルして実行すると、「残念ながら、FirstApp が停止しました」という結果になります。メッセージ。
以前、UI コンポーネントにアクセスするスタートアップ コードをonStart()
アクティビティのメソッドに移動することで、この問題を回避しました。
@Override
protected void onStart()
{
super.onStart();
myTextView = (TextView) findViewById (R.id.textview1);
myTextView.setText ("Hello tablet!");
}
これにより、左上に "Hello Tablet!" と表示された単一の TextView を持つ動作する APK が生成されます。- 私の簡単な質問は 2 つあります...
onCreate()
プロジェクトが Fragments を使用している場合、おそらくまだ作成されていないため、インターネット上の多くのサンプル コードで発生しているように、Activityのメソッドで UI コンポーネントにアクセスできないことを完全に期待する必要がありますか?onStart()
アクティビティのメソッド内で UI コンポーネントにアクセスすることは許容されますか(これは動作します)、または何か他のことを行う必要がありますか? 以前は Fragment のonCreateView
メソッドも使用していましたが、Fragment 内の UI コンポーネントに実際にアクセスするのに最適な場所は、onCreate()
まだ試していない Fragment のメソッドですか?
またonCreate()
、新しいプロジェクトを作成するときにAndroid Studioが作成するデフォルトのフラグメントのメソッドにはスタブが提供されていません...しかし提供されてonCreateView
おり、ライフサイクルのドキュメントは(とにかく私にとって)これが最善である可能性があることを示唆していますこのようなことをする場所。
これに関するガイダンスをいただければ幸いです。