Как доставать переменную onCreate?

Внутри onCreate у меня есть следующий фрагмент кода:

final String regId = GCMRegistrar.getRegistrationId(this);

// Check if regid already presents
if (regId.equals("")) {
    // Registration is not present, register now with GCM
    GCMRegistrar.register(this, SENDER_ID);
} else {
    // Device is already registered on GCM
    if (GCMRegistrar.isRegisteredOnServer(this)) {
        // Skips registration.
        Toast.makeText(getApplicationContext(), "Bienvenido", Toast.LENGTH_LONG).show();
        String var=regId;
    } else {

        //...

То, что я стараюсь делать, состоит в том, чтобы перемещать информацию, хранившуюся в переменной regId в метод, который снаружи onCreate, что является следующим:

public void getData() {
    class GetDataJSON extends AsyncTask<String, Void, String>{ 
        @Override
        protected String doInBackground(String... params) {
            DefaultHttpClient httpclient = 
                   new DefaultHttpClient(new BasicHttpParams());
            HttpPost httppost = 
                   new HttpPost("http://url.mx/selectAllJSON.php?id="+var);

            // Depends on your web service
            httppost.setHeader("Content-type", "application/json");

            InputStream inputStream = null;
            String result = null; 

            // ...

Все это в том же классе, однако, показывает мне ошибку синтаксиса: как могло бы делать это?

3
задан 22.01.2016, 14:57
3 ответа

Объяви переменную refId вне метода, но внутри класса. Это будет способствовать тому, чтобы он был доступен во всех методах инстанции активности.

class MiActividad extends Activity {
   String regId;

   void onCreate(...) {
       regId = GCMRegistrar.getRegistrationId(this);
       // ...
   } 
}

Единственная полу-проблема состоит в том, что ты не сможешь использовать модификатор final. В любом случае ты не будешь нуждаться в этом, если ты не изменяешь стоимость в другой стороне.

Потом ты это используешь, где ты нуждался в этом без необходимости делать заявление:

//fijate que utiliza regId
HttpPost httppost = new HttpPost("http://url.mx/selectAllJSON.php?id=" + regId);
4
ответ дан 24.11.2019, 14:58

С другой стороны Вы можете делать какие-то изменения: , если Вы звоните в getData с onCreate, может использовать что-либо подобное (aГ±adido из-за комментария rnrneverdies, в котором он прав, что он понимал, что Вы звонили в метод с onCreate);

в методе onCreate;

    //..
    void onCreate(...) {
       final String regId = GCMRegistrar.getRegistrationId(this);
       //se llama cuando sea nesesario, pasando la variable;
       getData(regId);

И в методе getData, который мы перемещаем переменную:

public void getData(final String regId) {

    class GetDataJSON extends AsyncTask<String, Void, String> {


        @Override
        protected String doInBackground(String... params) {
             DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
             HttpPost httppost = new HttpPost(
                                "http://tuescuelanoticias.x10.mx/selectAllJSON.php?id=" 
                                              + regId);

            }
        }
    }
1
ответ дан 24.11.2019, 14:58
  • 1
    здесь ты понимаешь, что getData призван с onCreate, вещь, которая не является ясной в вопросе. – rnrneverdies 21.01.2016, 23:15
  • 2
    так как ты прав, сказав, что он не является ясным, хороший одинокий я это поместил, чтобы предлагать другую альтернативу. Привет – Angel Angel 21.01.2016, 23:26
  • 3
    Большое спасибо @rnrneverdies и Анхель Анхель, prob и # 233; успешный разум первый opci и # 243; n, tambi и # 233; n я протестирую вторую, мой вопрос состоит в том, что он делает модификатор конечным? – JESUS ESPINOSA 21.01.2016, 23:50
  • 4
    установив конец ты показываешь, что стоимость, однажды установленная, не может быть измененной. – rnrneverdies 21.01.2016, 23:52
  • 5
    я заканчиваюсь понимать, что я ответил вопрос, не читая титула, я ответил ее в vase на это - > то, что я стараюсь делать, состоит в том, чтобы перемещать информацию, хранившуюся в переменной действуйте в один м и # 233; все, кто снаружи onCreate, что тот следующий. Привет – Angel Angel 22.01.2016, 00:05

Действительно самое логическое состоит в том, чтобы объявлять глобальную переменную (в этом случае varible var), хотя другой выбор состоял бы в том, чтобы производить regId внутри метода getData() и, таким образом, мы лишаем себя глобальной переменной сверху. Может быть много подходов, это было бы хорошим прояснять вопрос, чтобы отображать конечную цель. Предыдущие ответы действительные, так что у него есть выборы, чтобы выбирать мистер. Привет!

1
ответ дан 24.11.2019, 14:58