Java Android能够处理这样一个大型活动吗?

Java Android能够处理这样一个大型活动吗?,java,android,Java,Android,我正在制作一个安卓音板。我目前有12页的这一特定类别。每个页面都有自己的活动,每个页面有10个按钮 今天有人问我为什么不使用一个活动并在页面之间切换setcontentview(XML),而不是使用这么多活动 我想了想,这似乎不是个坏主意。但我很好奇这是否真的会更好 这意味着这一活动的onclick和onlongclick方法将有一个100+switch case语句。它将有200多个变量。我必须添加200多个监听器(尽管我认为我可以在加载特定页面时设置10个监听器,而不是在开始时设置所有监听器

我正在制作一个安卓音板。我目前有12页的这一特定类别。每个页面都有自己的活动,每个页面有10个按钮

今天有人问我为什么不使用一个活动并在页面之间切换setcontentview(XML),而不是使用这么多活动

我想了想,这似乎不是个坏主意。但我很好奇这是否真的会更好

这意味着这一活动的onclick和onlongclick方法将有一个100+switch case语句。它将有200多个变量。我必须添加200多个监听器(尽管我认为我可以在加载特定页面时设置10个监听器,而不是在开始时设置所有监听器。我还可以在显示新XML之前释放当前的监听器)


Android能够处理这样的单个活动吗?我计划增加更多的声音,这样也许有一天我可能会有20页左右。

我将分别阐述你的几点观点:

  • 安卓能处理吗。对然而,你应该对你设计事物的方式保持聪明

  • 根据您正在运行的版本,您应该查看
    TabActivity
    Fragment
    s。如果你用这些来构建你的活动,你可以在任何给定的时间,根据十个左右的
    按钮
    来创建监听器

  • 这里有一个更激进的想法:创建一个扩展
    活动的母类
    ,并将其构造函数信息传递给要显示的按钮。这样,一个
    活动中只有10个左右的按钮,但有12个活动

  • 更激进的想法是:扩展按钮并将其作为
    活动扩展的内部类。这会给你带来一些有趣的地方


如果你问一个稍微好一点的问题,我可以给你一个更好的答案,但这里有一些想法,随它去吧。祝你好运。

是的,让它成为一项活动。不同的
活动
应该只用于完全不同的用例。考虑使用<代码> ListVIEW < /代码>或<代码> GRIDVIEW ,或一个活动内的“查看程序”。

如果您最终使用的是
列表视图
或任何带有适配器的东西,那么您的活动应该如下所示:

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);
   }

 }

}

如果你必须有一个100+开关声明,那么你的应用程序有严重问题。我会给出一个更好的答案如果它们都很相似,只需启动该
活动的一个新实例
,并通过带有
意图的
传递任何区别于它们的信息。这将是一个100+开关盒,因为它需要每个按钮id都有一个盒。12页上的10个按钮是120。我加上一句,不再算了。