Android: ShowDialog with Variables



嗨,我正在使用 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;

}
}
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 .

相关内容

最新更新