如果密码字段未填写,则不应链接到下一个活动&显示警报。我怎样才能做到这一点?

时间:2011-02-17 05:46:15

标签: android

我的代码:

package com.example.linkingpage;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class LinkingPage extends Activity {

     String tv,tv1;
    EditText name,pass;
     TextView x,y;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         Button button = (Button) findViewById(R.id.widget44);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                Intent obj = new Intent(LinkingPage.this,LinkingPage.class);
                startActivity(obj);

            }
        });

        x = (TextView) findViewById(R.id.widget46);
        y = (TextView) findViewById(R.id.widget47);
         name = (EditText)findViewById(R.id.widget41);
         pass = (EditText)findViewById(R.id.widget43);
        Button button1 = (Button) findViewById(R.id.widget45);
        button1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                 x.setText(tv);
                 y.setText(tv1);

                 tv = name.getText().toString();

                 if(tv.trim().equals("")) {
                     // text is empty
                     showDialog(EMPTY_TEXT_ALERT);
                 }


                 tv1 = pass.getText().toString();

                 if (tv1.trim().equals(""))
                 {
                   showDialog(EMPTY_TEXT_ALERT);

                 }

                  else
                  {Intent obj = new Intent(LinkingPage.this,ResourcePage.class);
                  obj.putExtra("name", name.getText().toString());                                          
                  obj.putExtra("pass", pass.getText().toString());
                      startActivity(obj);
                  }
           }
        });


    }
    private final static int EMPTY_TEXT_ALERT = 0;
    @Override
    public Dialog onCreateDialog(int id) {
        switch(id) {
            case EMPTY_TEXT_ALERT: {
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setMessage("Message:Field Empty!!!")
                       .setPositiveButton("OK", new DialogInterface.OnClickListener() {

                           @Override
                           public void onClick(DialogInterface dialog, int which) {
                               dialog.cancel();
                           }
                 });

                 return builder.create();
            }
        }

        return null;
    }

}

当两个字段都保持为空时,单击按钮会生成警报。仅填充名称字段时也会发生相同的情况。但是当名称字段保持为空并且passwor被填充时,那么虽然生成了警报但是也生成了显示我的密码的其他页面的链接。我如何防止这种情况?

2 个答案:

答案 0 :(得分:1)

因为你的其他人开始你的下一个活动只适用于你的第二个if语句(密码那个)

这样:

if(tv.trim().equals("")) {
    // text is empty
    showDialog(EMPTY_TEXT_ALERT);
}

与此完全分开:

if (tv1.trim().equals(""))
{
    showDialog(EMPTY_TEXT_ALERT);

}else
{
    Intent obj = new Intent(LinkingPage.this,ResourcePage.class);
    obj.putExtra("name",name.getText().toString());                                          
    obj.putExtra("pass", pass.getText().toString());
    startActivity(obj);
}

为了检查它们,你应该做这样的事情:

if(tv.trim().equals("") || tv1.trim().equals(""))
{
    showDialog(EMPTY_TEXT_ALERT)
}else{
    Intent obj = new Intent(LinkingPage.this,ResourcePage.class);
    obj.putExtra("name",name.getText().toString());                                          
    obj.putExtra("pass", pass.getText().toString());
    startActivity(obj);
}

而且我真的无法强调,如果你使用描述性名称代替你的变量而不是像tv,tv1,button,button1,widget38等等,你会更容易理解......

答案 1 :(得分:0)

else移除代码并将其放在那里else没有elseshowDialog return;之后

并且不要发布重复的帖子