Android:ShowDialog with Variables

时间:2013-01-30 23:21:07

标签: java android variables 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 个答案:

答案 0 :(得分: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()之外,然后取出onCreate中的int用户,并将其写为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