1

嗨,我正在研究 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;


}
}
4

1 回答 1

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,这似乎是 a EditText/TextView,因此您很可能NullPointerException在实际运行应用程序时也会得到 a 。将 user 的分配移动到 inside 之类的地方 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.

于 2013-01-30T23:24:08.300 回答