2012-05-06 4 views
0

나는 안드로이드 사운드 보드를 만들고 있습니다. 현재이 특정 카테고리에 대해 12 페이지가 있습니다. 각 페이지는 고유 한 활동과 각 페이지를 10 개의 버튼으로 가지고 있습니다.Android에서 이와 같은 단일 활동을 처리 할 수 ​​있습니까?

누군가 내가 오늘 한 가지 활동을 사용하고 많은 활동을하는 대신 페이지간에 setcontentview (XML)를 전환하지 않는 이유를 묻습니다.

나는 그것에 대해 생각하고 그것은 나쁜 생각처럼 보이지 않습니다. 하지만 정말 좋을지 궁금합니다.

이것은 하나의 활동이 onclick 및 onlongclick 메소드에 대해 100+ switch case 문을 가짐을 의미합니다. 200 개가 넘는 변수가 있습니다. 200 개가 넘는 청취자를 추가해야 할 것입니다. (처음에는 모든 페이지가 아닌 특정 페이지를로드 할 때 10 개의 리스너를 설정할 수 있다고 생각합니다. 새 XML이 표시되기 전에 현재 리스너를 릴리스 할 수도 있습니다).

Android에서 이와 같은 단일 활동을 처리 할 수 ​​있습니까? 더 많은 소리를 추가 할 계획이므로 언젠가는 20 페이지가 될 수도 있습니다.

+0

관련 코드를 게시하시기 바랍니다. – Raptor

+0

100 개 이상의 switch 문을 사용해야하는 경우 앱에 심각한 문제가 있습니다. 더 좋은 방법으로 답변을 게시하겠습니다. – you786

+0

그것들이 모두 비슷하다면,'Activity'의 새로운 인스턴스를 시작하고'Intent'로 전달 된'Bundle'을 통해 어떤 정보를 구별하는지 전달하십시오. –

답변

0

예, 모든 활동을 하나 만듭니다. Activities이 완전히 다른 경우에는 완전히 다른 용도로만 사용해야합니다. ListView 또는 GridView 또는 하나의 활동 내에 '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을 확인해야합니다. 이러한 활동을 구축하면 주어진 시간에 어느 정도의 청취자가 10 명 정도 있는지 확인할 수 있습니다.

  • 다음은 훨씬 더 급진적 인 아이디어입니다. Activity을 확장하는 마더 클래스를 만들고 표시 할 버튼에 대한 생성자 정보를 전달하십시오. 이렇게하면 Activity에는 10 개의 버튼 만 있지만 12 개의 활동이 있습니다.

  • 더욱 급진적 인 아이디어 : 버튼을 확장하여 Activity 확장의 내부 클래스로 지정하십시오. 이것은 당신에게 몇몇 재미있는 장소를 인도 할 수 있었다.

당신이 약간 더 나은 질문을 경우에, 나는 당신에게 더 나은 대답을하지만, 여기에 실행 몇 가지 아이디어를,입니다 수 있습니다. 행운을 빕니다.

관련 문제