Androidアクティビティのワーカーとしてフラグメントを使用する方法を学ぼうとしています。主なアクティビティには、次の単純な xml レイアウトがあります。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Press me" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="" />
</LinearLayout>
次のクラス定義を使用してフラグメントを定義します。
public class UpdateTextFragment extends Fragment {
public static UpdateTextFragment newInstance() {
return new UpdateTextFragment();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void startUpdateText() {
TextView textView = ((TextView) getActivity().findViewById(R.id.text));
textView.setText("I've been pressed!");
}
}
次に、メインのアクティビティからフラグメントを追加startUpdateText
し、ボタンの を使用してフラグメントのメソッドを呼び出しますonClickListener
。つまり、
public void onClick(View arg0) {
UpdateTextFragment fragment = UpdateTextFragment.newInstance();
getFragmentManager().beginTransaction().add(fragment, "updateText").commit();
fragment.startUpdateText();
}
コードは問題なくコンパイルされ、タブレットにアップロードされます。「私は押されました!」というテキストを書くと思います。ボタンを押すとテキストビューに移動しますが、アプリは標準の「残念ながらアプリが機能しなくなりました」でクラッシュします。このキャッチされていない例外をキャッチするためのクラスをまだ実装していません。不足している、または理解していないことが明らかであることを期待していましたか?
ありがとう