2013-11-29 33 views
0

我正在爲我的客戶端第一次製作android應用程序。他需要在應用中實現多種語言。所以,我把一些相對的佈局,並點擊它將被改變爲特定的語言。但是現在,想要提供一個「提醒對話框」進行選擇確認。爲此,我製作了一個警告框並在正面按鈕中實施了一個開關語句。但是,它不工作,我沒有任何錯誤:(這是我的一段代碼:。AlertDialog with switch語句在Android中

rl_german.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     AlertDialog();; 

    } 
}); 
rl_english.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

    AlertDialog(); 

    } 
}); 
    } 

private void AlertDialog() 
    { 
     new AlertDialog.Builder(this) 
     .setTitle("") 
     .setMessage("Are you sure you want to change the language?") 
     .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 

public void onClick(DialogInterface dialog, int which) { 
     switch(which){ 
     case R.id.rl_english: 
      startActivity(new Intent(Language.this,HomeActivity2.class)); 
     break; 
     case R.id.rl_german: 

     break; 
     case R.id.rl_french: 

     break; 
    } 
    } 
}) 
.setNegativeButton("No", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     // do nothing 
    } 
}) 
.show(); 
} 

但是,如果我打電話「startActivity」直接在我的「onClick」方法,其。做工精細任何人可以幫助我,請在此先感謝:)

+0

首先關閉對話框,然後開始新的活動... –

+0

而不是Language.this使用getApplicationContext()並讓我知道。 – Avijit

+0

這不是在工作的朋友:( –

回答

1

這裏的問題是,which指的Buttonid點擊了AllertDialog.Builder(例如BUTTON_POSITIVEBUTTON_NEGATIVE)。

你可以做的是做一個Intent變量作爲成員變量(在方法外聲明),然後調用startActivity()作爲參數。簡單的例子:

public class MyActivity extends Activity 
{ 
    Intent i; 

    public void onCreate(...) 
    { 
     ... 
     rl_english.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     i = new Intent(Language.this,HomeActivity2.class); 
     AlertDialog(); 
     } 

private void AlertDialog() 
{ 
    new AlertDialog.Builder(this) 
    .setTitle("") 
    .setMessage("Are you sure you want to change the language?") 
    .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     startActivity(i)); 
} 

這是快速未經測試的代碼,所以你可能需要調整您的需求,增加額外的代碼和括號等......問題是,你正在試圖比較which到點擊Button在你的Activity,但這實際上是指Button點擊你的AlertDialog。您需要實例化Intent,具體取決於單擊哪個Acitvity Button,然後在單擊您的AlertDialog中的積極Button時啓動Activity,或者如果單擊否定Button則取消。

+0

謝謝Sooooo我的親愛的朋友.. :)其實我對這個問題有點緊張。因爲,我不知道如何解決這個問題。你救了我.. :)謝謝你! –

0

我認爲,問題是,你的開關工作在來自onClick(DialogInterface對話框,其中的int)的「which」參數的基礎上,但是你用「R.id.rl_english」來檢查它。你沒有任何情況符合條件,因爲「哪個」使按鈕不是任何視圖的ID。