2014-08-31 2 views
-1

내 질문은 다음과 같습니다. 내 주 활동에 메뉴 역할을하는 회 전자가 있으며, 다른 회선에서 동일한 회 전자를 사용하여 일부 코드 줄을 저장할 수 있습니다. . 내가 어떻게 그걸 성취 할 수 있니? 나는 코드를 게시 할 것인가, 아니면 더 좋은 해결책이 있는가? 여기에 XML회 전자를 여러 활동의 메뉴로 사용하십시오.

<string-array name="comboCasino"> 
     <item>Filiale</item> 
     <item>Wien Simmering</item> 
     <item>Wien Lugner City</item> 
     <item>Gmunden</item> 
     <item>Salzburg</item> 
     <item>Linz</item> 
     <item>Saalbach</item> 
     <item>Innsbruck</item> 
     <item>Reutte</item> 
     <item>Bregenz</item> 
     <item>Kufstein</item> 
     <item>Bratislava</item> 
    </string-array> 

답변

0

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     final Spinner spinner = (Spinner) findViewById(R.id.comboCasino); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.comboCasino, android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 
     // this will be called when you select any item in this spinner 
     spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) { 
       // get the text at that position 
       String Text = spinner.getSelectedItem().toString(); 
       if(Text.equals("Wien Simmering")) { 
        Intent NewPost = new Intent(StartingPoint.this,Simmering.class); 
        startActivity(NewPost); 
       } 
       if(Text.equals("Wien Lugner City")) { 
        Intent NewPost = new Intent(StartingPoint.this, LugnerCity.class); 
        startActivity(NewPost); 
       } 
       if(Text.equals("Gmunden")) { 
        Intent NewPost = new Intent(StartingPoint.this, Gmunden.class); 
        startActivity(NewPost); 
       } 
       if(Text.equals("Salzburg")) { 
        Intent NewPost = new Intent(StartingPoint.this, Salzburg.class); 
        startActivity(NewPost); 
       } 
       if(Text.equals("Linz")) { 
        Intent NewPost = new Intent(StartingPoint.this, Linz.class); 
        startActivity(NewPost); 
       } 
       if(Text.equals("Saalbach")) { 
        Intent NewPost = new Intent(StartingPoint.this, Saalbach.class); 
        startActivity(NewPost); 
       } 
       if(Text.equals("Innsbruck")) { 
        Intent NewPost = new Intent(StartingPoint.this, Innsbruck.class); 
        startActivity(NewPost); 
       } 
       if(Text.equals("Reutte")) { 
        Intent NewPost = new Intent(StartingPoint.this, Reutte.class); 
        startActivity(NewPost); 
       } 
       if(Text.equals("Bregenz")) { 
        Intent NewPost = new Intent(StartingPoint.this, Bregenz.class); 
        startActivity(NewPost); 
       } 
       if(Text.equals("Kufstein")) { 
        Intent NewPost = new Intent(StartingPoint.this, Kufstein.class); 
        startActivity(NewPost); 
       } 
       if(Text.equals("Bratislava")) { 
        Intent NewPost = new Intent(StartingPoint.this, Bratislava.class); 
        startActivity(NewPost); 
       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
       // TODO Auto-generated method stub 
      } 
     }); 
    } 

당신이 바로 그것이있다. Spinner 만 선언하고 어댑터를 만들고 (코드로 만들면 항상 필요하지는 않지만) xml 속성을 적용한 다음 실제 어댑터를 제공하면 실제 초기화가 그렇게 나쁘지 않습니다. 문제는 OnItemSelectedListener의 긴 코드입니다.

당신은 초기화 권리를 가지고, 난 그냥 그렇게 같은 switchif의 변경합니다 :

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    final Spinner spinner = (Spinner) findViewById(R.id.comboCasino); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.comboCasino, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    // this will be called when you select any item in this spinner 
    spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) { 
      // get the text at that position 
      String Text = spinner.getSelectedItem().toString(); 
       switch(position) { 
        case 0: 
         Intent NewPost = new Intent(StartingPoint.this, Simmering.class); 
         startActivity(NewPost); 
        case 1: 
         Intent NewPost = new Intent(StartingPoint.this, LugnerCity.class); 
         startActivity(NewPost); 
        case 2: 
         Intent NewPost = new Intent(StartingPoint.this, WhateverTown.class); 
         startActivity(NewPost); 
         . 
         . 
         . 
        case 10: 
         ........... 
         ...... 
       } 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
      // TODO Auto-generated method stub 
     } 
    }); 
} 

자동으로 position라는 OnItemSelectedListener에 전달 INT가 클릭 된 목록에서 위치를 표시, 그래서 많은 if- 문구 대신 이것을 사용할 수 있습니다.

+0

대단히 고맙습니다. 우선 회 전자 스위치 케이스를 사용하겠습니다. 둘째, 기본 클래스에서 회 전자를 사용하고 싶습니다. 어떻게해야하는지 알려주시겠습니까? 다른 활동에서이를 구현하려면 어떻게해야합니까? 미리 감사드립니다. –

+0

누군가가 기본 클래스에서 내 회 전자를 만들고 다른 모든 활동에서 구현할 수있는 방법을 알려주실 수 있습니까? –

+0

더하기 : 저는 다른 모든 활동에서 동일한 ActionBar도 원합니다. 누군가가 이것을 성취하도록 도울 수 있다면 매우 행복 할 것입니다! 사전에 당신을 감사하십시오 –

1

나는 몇 가지 가능한 해결책을 생각할 수 있습니다

  1. ActionBar에 스피너를 추가합니다.

  2. 모든 활동에 대한 기본 클래스를 만듭니다. 이 기본 클래스에는 Spinner의 초기화 코드가 들어 있습니다.

  3. 적절한 논리로 사용자 지정 구성 요소를 만듭니다. 이 구성 요소를 메뉴가 필요한 각 활동에 추가하십시오.

관련 문제