1

私はそれがメインアクティビティにたくさんの特別なメソッドを備えたタイマーだけであるアプリを持っています。これは問題なく機能します。今、私はそれを機能させているので、フラグメントを介して多くの場所にタイマーを挿入する、はるかに複雑なアプリケーションにそれを含めようとしています。

フラグメントアクティビティにすべての特別なメソッドを含める必要がありますか?IE:

public class Timer_fragment extends android.support.v4.app.Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.timer_frag, container, false);
    }
    //SHOULD I insert my special methods here?
}

または、メインに含める必要がありますか?

両方の方法を試したので質問しています。フラグメントアクティビティの方法ではJavaでエラーが発生しましたが、メインに配置すると実行時にエラーが発生しました。基本的に、スタンドアロンアプリケーションとして優れた動作をするタイマーがありますが、アプリの複数の場所にプラグインできるように、タイマーをフラグメントに変換しようとしています。

「特殊な方法」の例: レイアウトを表示し、タイマーに入力された新しい数値に従って更新します。これらの方法では、使用する前にビューを膨らませる必要があります。

注:実行時に発生するエラーはnullPointerExceptionsです。

4

1 に答える 1

2

Fragment の背後にある考え方は、他のアクティビティで使用できるアクティビティの再利用可能なセクション (つまり、フラグメント) であり、同じアクティビティでも他のフラグメントが追加されているかどうかに関係なく使用できるということです。

たとえば、Gmail アプリでは、受信トレイ内のすべてのメールのリストが 1 つのフラグメントであり、メールの実際の内容が別のフラグメントです。横向きモードのタブレットでは、両方が表示されます。ただし、縦向きモードの電話では、2 つのフラグメントのうちの 1 つしか一度に表示されません。

したがって、各フラグメントは、そのフラグメントを使用するために必要なすべての機能と UI コンポーネントをカプセル化する必要があります。これは、フラグメントのビュー XML の膨張など、すべての「特別な」メソッドがフラグメント内で発生する必要があることを意味します。

フラグメントを利用するアクティビティ (またはアクティビティ) は、フラグメントをアクティビティのレイアウトに追加するために FragmentManager (または同様のメソッド) を使用するだけでよいはずです。フラグメントの親アクティビティは、フラグメントと、他のアクティビティ、フラグメント、スレッドなどの他のコンポーネントとの間の通信も処理する必要があります。

于 2012-07-30T01:40:18.527 に答える