2017-01-28 10 views
0

Androidスタジオでアンドロイド用のアプリケーションを開発しています。たとえば、HTTPリクエストなどの非同期メソッドに情報を渡す方が、以下のいずれの方が良いか疑問に思っています。アンドロイドの非同期メソッドに情報を渡す最も良い方法は何ですか?

まず方法:私は、一例として、警告ダイアログを使用し、最終的なようにパラメータを宣言します。

final String par1 = "Test"; 

DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      switch (which){ 
       case DialogInterface.BUTTON_POSITIVE: 
        //Yes button clicked 
        doSomething(par1); 
        break; 

       case DialogInterface.BUTTON_NEGATIVE: 
        //No button clicked 
        break; 
      } 
     } 
    }; 

    AlertDialog.Builder builder = new AlertDialog.Builder(
     MainActivity.getCurrentInstance().getApplicationContext() 
    ); 
    builder.setMessage("confirm the operation?") 
      .setPositiveButton("Yes", dialogClickListener) 
      .setNegativeButton("No", dialogClickListener).show(); 

第二の方法:私は、特定の恐怖を持って

MyOnClickListener dialogClickListener = new MyOnClickListener("test") { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      switch (which){ 
       case DialogInterface.BUTTON_POSITIVE: 
        //Yes button clicked 
        doSomething(this.getParameterValue()); 
        break; 

       case DialogInterface.BUTTON_NEGATIVE: 
        //No button clicked 
        break; 
      } 
     } 
    }; 

    AlertDialog.Builder builder = new AlertDialog.Builder(
     MainActivity.getCurrentInstance().getApplicationContext() 
    ); 
    builder.setMessage("confirm the operation?") 
      .setPositiveButton("Yes", dialogClickListener) 
      .setNegativeButton("No", dialogClickListener).show(); 

:リスナーのコンストラクタに渡しますグローバル変数の一種であるための最初の方法。

答えて

1

最初の方法は問題ありません。これはグローバル変数ではありませんが、これはクロージャーに取り込まれたローカル変数です。技術的に言えば、これは、リスナーのコンストラクタに変数を渡した場合と同じように動作し、そこに格納してからメソッドで使用します。違いは、コンパイラがすべてのことを行い、コードを少なく書くことができることです。

関連する問題