2012-05-06 3 views
0

私はAndroidのサウンドボードを作っています。私は現在、この特定のカテゴリに12ページあります。各ページにはそれぞれ独自のアクティビティと各ページが10個のボタンとして表示されます。Androidはこのような単一の大きなアクティビティを処理できますか?

誰かが今日私に1つのアクティビティを使用していないだけでなく、多くのアクティビティを持つ代わりにページ間でsetcontentview(XML)を切り替えるのはなぜかと尋ねました。

私はそれについて考えましたが、悪い考えのようには見えません。しかし、それが本当に良いかどうかは不思議です。

これは、この1つのアクティビティが、onclickメソッドとonlongclickメソッドで100以上のswitch caseステートメントを持つことを意味します。 200を超える変数があります。私は200人以上のリスナーを追加しなければならないでしょう(しかし、私は10人のリスナーを、最初からすべてではなく特定のページをロードするように設定することができると思うのですが、新しいXMLが表示される前に、

Androidはこのような1つのアクティビティを処理できますか?もっと多くの音を追加する予定だから、たぶん1日に20ページ程度もあるかもしれない。

+0

を、関連するコードを投稿してください。 – Raptor

+0

100以上のswitch文が必要な場合は、アプリに深刻な問題があります。私はこれを行うより良い方法で答えを投稿します。 – you786

+0

もしそれらが似ているのであれば、その 'Activity'の新しいインスタンスを起動し、' Intent'で渡された 'Bundle'を使ってそれらを区別する情報を渡してください。 –

答えて

0

はい、すべて1つのアクティビティにしてください。異なるActivitiesは、まったく異なる用途にのみ実際に使用する必要があります。 ListViewまたはGridView、または1つのアクティビティの中に 'ViewPager'を使用することを検討してください。

あなたがListViewまたはアダプタをとるものを使用して終了した場合は、あなたの活動は、次のようになります。

class MyActivity extends Activity{ 

int mySounds[] = {R.raw.s1, R.raw.s2}; //etc. could also be a 2d array, one for each page of sounds. 

protected void onCreate(Bundle b) 
{ 
    setContentView(R.layout.myactivity); 

    ListView lv = (ListView) findViewById(R.id.myactivity_listView); 

    lv.setAdapter(new SoundAdapter(this)); 

} 

class SoundAdapter extends BaseAdapter{ 
    Context cont; 
    SoundAdapter(Context c){ 
    this.cont = c; 
    } 

    getView(int id, View convertView){ 
    if(convertView == null){ 
    ... 
    //inflate view to be a row/gridcell 
    } 

    convertView.setOnClickListener(new SoundClickListener(mySounds[id])); 
    } 



} 

class SoundClickListener extends View.OnClickListener{ 

    int resId; 

    public SoundClickListener(int resId) 
    { 
    this.resId = resId; 
    } 

    protected void onClick(View v){ 
    playSoundWithId(resId); 
    } 

} 

} 
0

私が個別にあなたのポイントのいくつかに対処します:

  • がそれを処理することができアンドロイドます。はい。それにもかかわらず、あなたは物事をデザインする方法について賢明でなければなりません。

  • 実行しているバージョンによっては、TabActivityまたはFragmentのいずれかを調べる必要があります。あなたがこれらの活動からあなたの活動を構築するなら、あなたはいつでも十数人の人々の上にリスナーを持つことができます。

  • ここでは、より徹底的に考えてみましょう:Activityを拡張する母クラスを作成し、そのボタンのコンストラクタ情報を渡して表示します。この方法では、Activityには10個のボタンしかありませんが、12個のアクティビティがあります。

  • もっと根本的なアイデア:ボタンを拡張し、Activityの内線クラスとして配置します。これはあなたに興味深い場所を導くことができます。あなたは少しより良い質問をする場合は

することは、私はあなたに、より良い答えを与えるが、ここではいくつかのアイデアですが、それを実行することができます。がんばろう。

関連する問題