Android: ShowDialog с переменными

Привет, я работаю в ShowDialog, и я хочу, чтобы он показал сообщение с 2 локальными переменными. По этой причине он говорит, что есть ошибка, поэтому я был бы признателен за помощь, если есть способ показать эти переменные. Вот мой код и строка, где ошибка это:

  .setMessage("The NIF is" +user +DNIWord  "-")

Остальная часть кода это:

protected Dialog onCreateDialog (int id){


     switch (id) {
     case DIALOG_ERROR_CANDIDATO:
           return new AlertDialog.Builder(this)
               .setIcon(R.drawable.ic_error)
               .setTitle(R.string.error)
               .setMessage("The NIF is" +user +DNIWord  "-")
               .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int whichButton) {
                    }
               })

               .create();
     }

    return null;


}

2 переменные получены отсюда:

int user = Integer.parseInt(dniText.getText().toString());

public static String DNIWord(int user) {
  return String.valueOf(user) + NIF_STRING_ASOCIATION.charAt(user % 23);
}

Спасибо

Редактировать:

 package com.prueba.inicio;


import com.prueba.R;
import com.prueba.R.drawable;
import com.prueba.R.id;
import com.prueba.R.layout;
import com.prueba.R.string;
import com.prueba.inicio.Autorizacion;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.content.DialogInterface;
import android.content.Intent;
import android.text.style.BackgroundColorSpan;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;



public class Ident extends Activity {
    private static final int DIALOG_ERROR_CANDIDATO= 0;
    public static final String NIF_STRING_ASOCIATION = "TRWAGMYFPDXBNJZSQVHLCKE";


    public static String DNIWord(int user) {
      return String.valueOf(user) + NIF_STRING_ASOCIATION.charAt(user % 23);
    }

    public void onCreate(Bundle icicle)
       {
          super.onCreate(icicle);
          setContentView(R.layout.identificacion);
          Button bSiguiente = (Button) findViewById(R.id.btn_siguiente);
          final EditText dniText = (EditText) findViewById(R.id.dni_candidato);

    bSiguiente.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {

         int user = Integer.parseInt(dniText.getText().toString());


         String longitud = dniText.getText().toString();


         if(user==8){
             Intent i = new Intent(Ident.this,Autorizacion.class);
                 startActivity(i);
         }
         else{
             showDialog(DIALOG_ERROR_CANDIDATO);
         }


    }


});

}
    protected Dialog onCreateDialog (int id){

         switch (id) {
         case DIALOG_ERROR_CANDIDATO:
               return new AlertDialog.Builder(this)
                   .setIcon(R.drawable.ic_error)
                   .setTitle(R.string.error)
                   .setMessage("The NIF is" +user +DNIWord (user)+  "-")
                   .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int whichButton) {
                        }
                   })

                   .create();
         }

        return null;


}
}

1 ответ

Решение

user переменная класса, DNIWord это просто метод. Измените вызов так, чтобы он был таким:

.setMessage("The NIF is" +user +DNIWord (user)+  "-")

DNIWord хотя работает с затененным user переменная, так

("The NIF is" +user +DNIWord (user)+  "-")

может быть сокращено до просто

("The NIF is" + DNIWord (user)+  "-")

Тем не менее, так как user похоже на классную сферу, и вы пытаетесь получить значение dniText , который, кажется, EditText/TextView , очень вероятно, что вы также получите NullPointerException когда вы действительно запускаете свое приложение. Переместить назначение пользователя куда-нибудь, как внутри onCreateDialog() ,

Редактировать: user не ограничен классом, но вместо этого локальный onCreate() локальные переменные, как следует из названия, являются локальными для включающего метода.

Переместить пользователя наружу onCreate() затем достаньте int Пользователь в onCreate и написать его так же, как user,

int user = 0; //class instance variable
public void onCreate(Bundle icicle)
{

  //...
  try{
    user = Integer.parseInt(dniText.getText().toString()); //no "int", just user
  }
  catch (NumberFormatException e)
  {
  }
}

Тогда в вашем onCreateDialog() метод, вы должны иметь возможность доступа user,

Другие вопросы по тегам