2016-08-02 6 views
-1

変数group_idに問題があります。このようなコードがあると、group_idをfinalとして宣言する必要があると言います。 try{...}の値を応答文字列の値に変更し、後でUserGroupRequestで使用する必要があるため、最終的にはできません。最終的な変数をどうやって調べることができますか?

私がAndroidスタジオでgroup_idを最終的なint配列に変更する自動修正を押すと、tryキャッチの変数の値が正しくなります。しかし、それはgroup_idが最終的なので、0に戻って以来、ちょっと残っていません。私が意味するところは、プログラムが問題なくデータベースからIDを取得するということです。

私はどのように変数が最終的に来ることができますか?ここで

おかげ

はコードです:

final EditText etGroupName = (EditText) findViewById(R.id.etGroupName); 
    final Button bRegisterGroup = (Button) findViewById(R.id.bRegisterGroup); 
    Intent intent = getIntent(); 
    final int user_id = intent.getIntExtra("user_id", 0); 
    final String firstname = intent.getStringExtra("firstname"); 
    final String lastname = intent.getStringExtra("lastname"); 
    final String mail = intent.getStringExtra("mail"); 
    int group_id = 0; 




    bRegisterGroup.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final String groupname = etGroupName.getText().toString(); 


      Response.Listener<String> responseListener = new Response.Listener<String>(){ 

       @Override 
       public void onResponse(String response) { 

        try { 
         JSONObject jsonResponse = new JSONObject(response); 
         boolean success = jsonResponse.getBoolean("success"); 
         group_id = jsonResponse.getInt("group_id"); 



         if(success){ 
          Intent intent = new Intent(RegisterGroupActivity.this, UserAreaActivity.class); 
          intent.putExtra("firstname", firstname); 
          intent.putExtra("lastname", lastname); 
          intent.putExtra("mail", mail); 
          RegisterGroupActivity.this.startActivity(intent); 
         } 
         else{ 
          AlertDialog.Builder builder1 = new AlertDialog.Builder(RegisterGroupActivity.this); 
          builder1.setMessage("Register Failed").setNegativeButton("Retry", null).create().show(); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
         etGroupName.setText("fel"); 
        } 
       } 
      }; 


      RegisterGroupRequest registerGroupRequest = new RegisterGroupRequest(groupname,responseListener); 
      RequestQueue queue = Volley.newRequestQueue(RegisterGroupActivity.this); 
      queue.add(registerGroupRequest); 
      UserGroupRequest groupRequest = new UserGroupRequest(user_id, group_id, "admin", responseListener); 
      queue.add(groupRequest); 
     } 
    }); 
} 
} 
+0

することができます:あなたはこの

public class aclass { private final int myvar; public aclass() { int tmp_val; try { tmp_val = Integer.parseInt("12"); } catch(Exception e) { tmp_val = 42; } this.myvar = x_val; } } 

ようにそれを行うことができます ここでは上記の例のように、あなたのコードですそれをグローバル変数として定義します。 –

+1

あなたのgroup_idをクラス変数として宣言してください。 –

+0

「最終変数」...それは全く変数ではありません**!それは**定数**です! –

答えて

1

global variableとして宣言し、クラスでanywhereそれを使用します。あなたはそれを最終的にする必要はありません。

public class MainActivity extends Activity { 

    int group_id = 0; //Global Vaiable have access to whole class 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 
    // now use it anywhere in class 
} 
+1

@MuhammadIrfanスレッドが同じクラスにある場合にアクセス可能です。 –

0

globalvariableとしてgroup_idを宣言してください。次に、その値を変更することができます。

public class ClassName extends Activity{ 

    private int group_id ; 
........ 
} 
1
public class MainActivity extends Activity { 

public int group_id = 0; //Make It Public Global Variable 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

} 

} 

それがキャッチを試みることにより起こって

0

にそれは公共のグローバル変数を確認します。 私は、これはあなたの問題を解決を願っていますあなたの成功の方法で別の変数を作成し、グループIDとして使用し、group_idの値にこの値を代入し、また、あなたのgroup_idの任意の場所を変更することができ、次の 見て、

public class C { 
private int x; 
public C() { 
int x_val; 
try { 
    x_val = Integer.parseInt("someinput"); 
} 
catch(NumberFormatException e) { 
    x_val = 42; 
} 
this.x = x_val; 
} 
} 
0

問題は:

final EditText etGroupName = (EditText) findViewById(R.id.etGroupName); 
    final Button bRegisterGroup = (Button) findViewById(R.id.bRegisterGroup); 
    Intent intent = getIntent(); 
    final int user_id = intent.getIntExtra("user_id", 0); 
    final String firstname = intent.getStringExtra("firstname"); 
    final String lastname = intent.getStringExtra("lastname"); 
    final String mail = intent.getStringExtra("mail"); 

    private final int group_id = 0; // declare your group_id as private final 

    bRegisterGroup.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final String groupname = etGroupName.getText().toString(); 


      Response.Listener<String> responseListener = new Response.Listener<String>(){ 

       @Override 
       public void onResponse(String response) { 

        //TEMPORARY VARIABLE 
        int tmp_group_id; 

        try { 
         JSONObject jsonResponse = new JSONObject(response); 
         boolean success = jsonResponse.getBoolean("success"); 
         tmp_group_id = jsonResponse.getInt("group_id"); 


         if(success){ 
          Intent intent = new Intent(RegisterGroupActivity.this, UserAreaActivity.class); 
          intent.putExtra("firstname", firstname); 
          intent.putExtra("lastname", lastname); 
          intent.putExtra("mail", mail); 
          RegisterGroupActivity.this.startActivity(intent); 
         } 
         else{ 
          AlertDialog.Builder builder1 = new AlertDialog.Builder(RegisterGroupActivity.this); 
          builder1.setMessage("Register Failed").setNegativeButton("Retry", null).create().show(); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
         etGroupName.setText("fel"); 
        } 
        this.group_id = tmp_group_id; // assign to actual variable 
       } 
      }; 


      RegisterGroupRequest registerGroupRequest = new RegisterGroupRequest(groupname,responseListener); 
      RequestQueue queue = Volley.newRequestQueue(RegisterGroupActivity.this); 
      queue.add(registerGroupRequest); 

      //also modify here make this.group_id 
      UserGroupRequest groupRequest = new UserGroupRequest(user_id, this.group_id, "admin", responseListener); 

      queue.add(groupRequest); 
     } 
    }); 
} 

} 
関連する問題