0

こんにちは、よろしくお願いします。私の英語で申し訳ありません。私には2つの大きな疑問があります

1 - 私は Android でのプログラミングにあまり時間をかけたことがありません。間違った方法で作成したものがたくさんあると確信しています。たとえば、xml 定義に別の xml を含めるいくつかのアプリを作成しました。

たとえば、header_section.xml が両方のアクティビティの xml 定義に含まれている 2 つのアクティビティがあるとします。そのheader_sectionには5つのボタンとより多くのビューなどがあります。わかりました、xmlではインクルードを作成するだけで機能します...しかし、ボタンを実装するには...両方のアクティビティでコードを繰り返す必要がありますか? ? 両方のアクティビティでコードを複製するのは本当に悪い習慣のように思えますが、たとえばアクティビティ A と B でこれを行うにはどうすればよいですか? このコードを両方のアクティビティ クラスでまったく同じにする必要がありますか????

private View header_section;
private Button bExample;

header_section=findViewById(R.id.header_section);
bExample=(Button)header_section.findViewById(R.id.bExample);

bExample.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {               
        //Whatwever...call a number, for example
    }
});

メインの xml では次のようになります。

<LinearLayout 
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="0dp" >  
    <include android:id="@+id/header_section" android:layout_gravity="center" android:gravity="center" layout="@layout/header_section" />
</LinearLayout>

そして、header_section.xml では次のようになります。

<LinearLayout 
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="0dp" >  
        <Button android:id="@+id/bExample"  />
</LinearLayout>    

2 - アプリに 10 個ほどのアクティビティがあるとします。それらのすべてに同じ機能を持つヘッダー セクションとボトム セクションがある場合、中央の領域のみを変更する (異なるリスト、ビューなどを表示する) ......すべてのアプリで 1 つのアクティビティのみを使用することをお勧めします。中央エリアのビューフリッパー?または、ヘッダーとボトムビュー、ハンドラーなどの実装のために、回避できるかどうかわからない、ポイント1で尋ねられた10のアクティビティすべてでコードが繰り返されている10のアクティビティがありますか?

よろしくお願いします

4

1 に答える 1

0

1)はい、通常はそれらを使用する必要がありますが、もっと簡単にすることができます...

1.a) bExample=(ボタン)findViewById(R.id.bExample); //ビューをロードする必要はありません

1.b) LAYOUT 内のボタン/clicable 要素で、onclick の呼び出し方法を少し短くすることができます。例を次に示します。

 <!--inside layout --> 
    <Button android:id="@+id/bExample"  android:onClick="aceptar" />

   //inside the Activity
   public void aceptar(View v){
       //here the code of the button
   }

すべてのアクティビティ内で同じメソッドを実装することに関する質問については、この投稿を確認してください:同じコンテキスト メニューを複数のアクティビティに追加する

2) 用途に応じて あまりやらない場合は、同じアクティビティですべてをロードし、不要なレイアウト要素を非表示/表示することができます。ただし、レイアウトが「重く」ない場合 (内部に要素/インクルードが多すぎる場合) は、別のアクティビティを使用することをお勧めします。すべてのアクティビティに対して同じレイアウトを読み込むことができ、異なるコンテンツ (文字列) を変更するだけで済みます。 /またはさまざまな要素を非表示/表示します。

于 2012-12-04T15:47:51.000 に答える