2014-05-09 1 views
0

다른 언어를 지원하는 앱이 있습니다. 그러나 나는 언어에 상관없이 사용할 레이아웃 파일이 1 개 있습니다.
이 레이아웃에는 다양한 활동을 열 수있는 두 개의 버튼이 있지만 알파벳 순서로 정렬해야합니다.
예 : 자동차 (eng) - 자동차 (de) 영어 버전 버튼 3은 자동차 활동을 열지 만 독일어 버전 버튼 1은 자동차 활동을 엽니 다. 어떻게 이런 일이 일어나는지, 언어에 따라 다른 활동을 만들어야합니까?
레이아웃 파일 :언어에 따라 열기 활동

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="72dp" 
     android:orientation="horizontal" > 


    <Button 
     android:id="@+id/btnButton1" 
     android:layout_width="72dp" 
     android:layout_height="72dp" 
     android:layout_marginTop="20dp" 
     android:layout_marginLeft="25dp" 
     android:text="1" /> 

    <Button 
     android:id="@+id/btnButton2" 
     android:layout_width="72dp" 
     android:layout_height="72dp" 
     android:layout_toRightOf="@+id/btnButton1" 
     android:layout_alignBottom="@+id/btnButton1" 
     android:layout_marginLeft="5dp" 
     android:text="2"/> 

    <Button 
     android:id="@+id/btnButton3" 
     android:layout_width="72dp" 
     android:layout_height="72dp" 
     android:layout_toRightOf="@+id/btnButton2" 
     android:layout_alignBottom="@+id/btnButton2" 
     android:layout_marginLeft="5dp" 
     android:text="3"/> 
</RelativeLayout> 

클래스 버튼이 있습니다

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Locale.getDefault(); 
     setContentView(R.layout.activity_animal_choice); 

     btnButton1 = (Button) findViewById(R.id.btnButton1); 
     btnButton1.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
        Intent intent = new Intent(Menu.this, Car.class); 
        startActivity(intent); 

      } 
     }); 

이 가능하다면 아마 더 빨리 될 것입니다하지 않을 경우,보고 좋은 것입니다 쉽게 다른 APK의 언어 당을 만들 수를

답변

1

동일한 활동 클래스를 사용할 수 있으며 각 언어마다 다른 레이아웃 또는 조각 XML을 사용할 수 있습니다. this page에서 "유연한 레이아웃 설계"절을 참조하십시오. 그것이 말했듯이, 당신은 모든 레이아웃 파일들이 업데이트 된 상태로 유지되도록하는 것이 추가 작업이 될 것입니다. 여러 언어를 지원하려는 경우 프로그래밍 방식으로 단추를 추가하는 것이 좋습니다. 그런 다음 각 언어의 문자열 만 업데이트하면됩니다. this thread을 참조하십시오.

+0

감사합니다 -하지만 읽었습니다,하지만 어디에서나 볼 수 없습니다 하나의 레이아웃 파일을 사용하는 방향으로 나를 가리키거나 가리키는 문서, 언어에 따라 그 링크에서 무언가를 놓치지 않는 한 어떤 버튼이 무엇을하는지에 따라 다릅니다. –

+0

'res/layout-de/main.xml','res/layout-en/main.xml' 등과 같이 여러개의 레이아웃 파일을 사용할 것을 제안합니다. 화면, 그래서 동일한 활동은 모든 레이아웃과 함께 사용할 수 있습니다. 올바른 레이아웃은 장치의 로케일 설정에 따라 자동으로 선택됩니다. –

+0

모든 문자열이 완료 될 때 프로그래밍 방식으로 단추를 추가 할 수도 있습니다. –

0

당신은 모든 버튼을 제공 할 필요가 같은 OnClickListener를 그 청취자에, 버튼의 텍스트가 무엇인지 같은 확인 :

OnCLickListener listener = new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
       Intent intent = new Intent(); 

       if (v.getText().equals(getString(R.string.car)) { 
        intent.setClass(Menu.this, Car.class); 
       } 
       else if (v.getText().equals(getString(R.string.whatever)) { 
        intent.setClass(Menu.this, Whatever.class); 
       } 
       // ... 

       startActivity(intent); 
     } 
    }); 

button1.setOnClickListener(listener); 
button2.setOnClickListener(listener); 
button3.setOnClickListener(listener); 
+0

감사합니다. if 문을 사용했지만 동일한 수신기를 사용하여 언어를 결정하지 않았습니다. –

관련 문제