您好我正在使用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;
}
}
答案 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
。