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ように見えるため、実際にアプリを実行すると も取得される可能性EditText/TextView非常に高くなります。NullPointerExceptionユーザーの割り当てを inside のような場所に移動します onCreateDialog()

編集: userクラススコープではなく、onCreate()ローカル変数に対してローカルです。名前が示すように、囲んでいるメソッドに対してローカルです。

ユーザーを外部に移動し、onCreate でユーザーonCreate()を取り出して、 のように記述します。intuser

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 に答える