2012-12-30 128 views
1

我需要检查版本的android和使用如果运行一个或其他alertdialog。使用这段代码,如果不共享“构建器”底部的最后部分。什么是最好的方式来做到这一点?检查sdk版本,如果

我的代码:

int sdk = android.os.Build.VERSION.SDK_INT; 
     if(sdk < android.os.Build.VERSION_CODES. HONEYCOMB) 
     { 
      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     } 
     else if (sdk >= android.os.Build.VERSION_CODES. HONEYCOMB) 
     { 
      AlertDialog.Builder builder = new AlertDialog.Builder(this, animazione); 
     } 

     builder.setView(view).create(); 
     TextView text=(TextView) findViewById(R.id.infoView1); 
     builder.setCancelable(false); 
     builder.setPositiveButton("Chiudi", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        tips = 0; 
        dialog.cancel(); 
      } 
      }); 
     builder.show();  
    } 

回答

7

简单,这样的:

AlertDialog.Builder builder; 
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) 
{ 
    builder = new AlertDialog.Builder(this); 
} 
else 
{ 
    builder = new AlertDialog.Builder(this, animazione); 
} 

作为@Eric指出,一个简单的else由于else if足以基本上超过所述相反的条件测试if

+0

应该把这个'else if'变成'else'(为了清晰起见)。否则为+1。 – Eric

+0

@ K-ballo,用你的代码,builder.setView(view).create();和其他生成器底部如果不可用(局部变量生成器可能尚未初始化) –

+0

@Pol Hallen:'builder'始终初始化,条件相反。但用一个'else'替换'else if',愚蠢的编译器不会抱怨... –