请帮助我......我不知道我做错了什么!!
我有3节课。
1 - 活动= TelaCadastroRestaurant.java
2 - Entity = Restaurant.java
3 - Method's Class = Metodos.java
问题:当我在方法 callMandarNuvem()或 ANY 中调用 getNomeRestaurante()时,其他方法 BUT pegarvalores(),它不工作 ...它显示为null。
错误的打印:http://i.imgur.com/sOcBkUM.png
********************例************************** *
如果我在方法pegarValores()和Toast中创建一个Restaurant对象,请调用:getNomeRestaurante()......这一切都是正常的。
但是,如果我在方法pegarValores()和Toast中创建一个Restaurant对象,请调用:getNomeRestaurante()... IT显示为空。
*********************方法的含义*******************
方法 - > inicializaComponentes():它引用Activity的组件。
方法 - > acaoBotoes():它处理按钮上的点击次数
方法 - > pegarValores():这意味着,抓住价值观。
方法 - > mandarNuvem():意思是,发送到clound(保存)
方法 - > caixaCerteza():这意味着,你确定要这样做吗?
方法 - > taskInProgress():表示loading..wait
公共类TelaCadastroRestaurante扩展了活动{
private Button proximoButton;
private EditText nomeRestauranteEditText, emailRestauranteEditText, telefoneRestauranteEditText;
private String nomeRestauranteValores, emailRestauranteValores;
private int telefoneRestauranteValores;
private String voceTemCerteza = "Você tem certeza que deseja cadastrar o restaurante ";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tela_cadastro_restaurante);
incializarComponentes();
acaoBotoes();
}
public void incializarComponentes() {
nomeRestauranteEditText = (EditText) findViewById(R.id.editTextNomeRestauranteTelaCadastroRestaurante);
emailRestauranteEditText = (EditText) findViewById(R.id.editTextEmailRestauranteTelaCadastroRestaurante);
telefoneRestauranteEditText = (EditText) findViewById(R.id.editTextTelefoneRestauranteTelaCadastroRestaurante);
proximoButton = (Button) findViewById(R.id.buttonProximoTelaCadastroRestaurante);
}
public void acaoBotoes() {
proximoButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pegarValores();
callMandarNuvem();
}
});
}
public void pegarValores(){
Restaurante rest = new Restaurante();
nomeRestauranteValores = nomeRestauranteEditText.getText().toString();
emailRestauranteValores = emailRestauranteEditText.getText().toString();
telefoneRestauranteValores = Integer.parseInt(telefoneRestauranteEditText.getText().toString());
rest.setNomeRest(nomeRestauranteValores);
rest.setEmailRest(emailRestauranteValores);
rest.setTelefoneRest(telefoneRestauranteValores);
}
public void callMandarNuvem(){
Runnable r = new Runnable() {
public void run() {
Metodos.mandarNuvem(TelaCadastroRestaurante.this);
}
};
Restaurante rest = new Restaurante();
Metodos.caixaCerteza(TelaCadastroRestaurante.this, voceTemCerteza + rest.getNomeRest() + "?",r);
}
}
public class Restaurante {
private String idRest;
private String nomeRest;
private String emailRest;
private int telefoneRest;
public Restaurante() {
}
public Restaurante(String nomeRest, String emailRest, int telefoneRest) {
this.nomeRest = nomeRest;
this.emailRest = emailRest;
this.telefoneRest = telefoneRest;
}
public String getIdRest() {
return idRest;
}
public void setIdRest(String idRest) {
this.idRest = idRest;
}
public String getNomeRest() {
return nomeRest;
}
public void setNomeRest(String nomeRest) {
this.nomeRest = nomeRest;
}
public String getEmailRest() {
return emailRest;
}
public void setEmailRest(String emailRest) {
this.emailRest = emailRest;
}
public int getTelefoneRest() {
return telefoneRest;
}
public void setTelefoneRest(int telefoneRest) {
this.telefoneRest = telefoneRest;
}
@Override
public String toString() {
return nomeRest;
}
}
公共课堂Metodos {
private static ProgressDialog dialog;
// Metodo que mostra o Aguarde a verificação
public static void taskInProgres(boolean mostrar, Context context) {
if (dialog == null) {
dialog = new ProgressDialog(context);
dialog = ProgressDialog.show(context, "","Espere um momento...", true);
}
if (mostrar) {
dialog.show();
} else {
dialog.dismiss();
}
}
// Metodo que mostra a caixa de certeza
public static void caixaCerteza(final Context context, final String texto, final Runnable func) {
AlertDialog.Builder builderaction = new AlertDialog.Builder(context);
builderaction.setTitle("Atenção!");
builderaction.setMessage(texto);
builderaction.setPositiveButton("Sim",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
func.run();
}
});
builderaction.setNegativeButton("Não",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alert = builderaction.create();
alert.setIcon(R.drawable.ic_stop);
alert.show();
}
// Metodo que manda pra nuvem
public static void mandarNuvem(final Context context){
Metodos.taskInProgres(true, context);
Restaurante rest = new Restaurante();
ParseObject restauranteParse = new ParseObject("Restaurante");
restauranteParse.put("nomeRestaurante", rest.getNomeRest());
restauranteParse.put("emailRestaurante", rest.getEmailRest());
restauranteParse.put("telefoneRestaurante", rest.getTelefoneRest());
restauranteParse.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Toast.makeText(context,"Salvo com sucesso!", Toast.LENGTH_SHORT).show();
Metodos.taskInProgres(false, context);
} else {
Toast.makeText(context, e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
});
}
}
答案 0 :(得分:0)
Restaurante rest = new Restaurante();
Metodos.caixaCerteza(TelaCadastroRestaurante.this, voceTemCerteza + rest.getNomeRest() + "?",r);
您正在调用实体类的默认构造函数来构建"空"餐厅。所以String nomeRest保持其值在该点为null。
所以请调用另一个构造函数来传递您的值,或者像在其他方法中一样使用setter!
答案 1 :(得分:0)
您正在创建Restaurant
的新实例,而不是设置任何值。我认为这就是你要找的东西:
public class TelaCadastroRestaurante extends Activity {
private Button proximoButton;
private EditText nomeRestauranteEditText, emailRestauranteEditText, telefoneRestauranteEditText;
private String nomeRestauranteValores, emailRestauranteValores;
private int telefoneRestauranteValores;
private String voceTemCerteza = "Você tem certeza que deseja cadastrar o restaurante ";
private final Restaurante rest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tela_cadastro_restaurante);
incializarComponentes();
acaoBotoes();
}
public void incializarComponentes() {
nomeRestauranteEditText = (EditText) findViewById(R.id.editTextNomeRestauranteTelaCadastroRestaurante);
emailRestauranteEditText = (EditText) findViewById(R.id.editTextEmailRestauranteTelaCadastroRestaurante);
telefoneRestauranteEditText = (EditText) findViewById(R.id.editTextTelefoneRestauranteTelaCadastroRestaurante);
proximoButton = (Button) findViewById(R.id.buttonProximoTelaCadastroRestaurante);
}
public void acaoBotoes() {
proximoButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pegarValores();
callMandarNuvem();
}
});
}
public void pegarValores(){
rest = new Restaurante();
nomeRestauranteValores = nomeRestauranteEditText.getText().toString();
emailRestauranteValores = emailRestauranteEditText.getText().toString();
telefoneRestauranteValores = Integer.parseInt(telefoneRestauranteEditText.getText().toString());
rest.setNomeRest(nomeRestauranteValores);
rest.setEmailRest(emailRestauranteValores);
rest.setTelefoneRest(telefoneRestauranteValores);
}
public void callMandarNuvem(){
Runnable r = new Runnable() {
public void run() {
Metodos.mandarNuvem(TelaCadastroRestaurante.this);
}
};
Metodos.caixaCerteza(TelaCadastroRestaurante.this, voceTemCerteza + rest.getNomeRest() + "?",r);
}
在Metodos
课程中,将mandarNuvem
更改为:
// Metodo que manda pra nuvem
public static void mandarNuvem(final Context context,Restaurante rest){
Metodos.taskInProgres(true, context);
ParseObject restauranteParse = new ParseObject("Restaurante");
restauranteParse.put("nomeRestaurante", rest.getNomeRest());
restauranteParse.put("emailRestaurante", rest.getEmailRest());
restauranteParse.put("telefoneRestaurante", rest.getTelefoneRest());
restauranteParse.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Toast.makeText(context,"Salvo com sucesso!", Toast.LENGTH_SHORT).show();
Metodos.taskInProgres(false, context);
} else {
Toast.makeText(context, e.getMessage(),Toast.LENGTH_SHORT).show();
}
}
});
}
然后将您对方法的调用更改为:
public void callMandarNuvem(){
Runnable r = new Runnable() {
public void run() {
Metodos.mandarNuvem(TelaCadastroRestaurante.this,rest);
}
};