我想在android中的if else语句中添加警告对话框

时间:2013-08-27 17:32:34

标签: android

如果密码和登录ID不匹配,我想提醒对话框显示。我尝试了下面的代码,但是当我运行时,如果文本相同然后执行,但是如果密码和登录ID不匹配,则应该显示警报但是进程退出说不幸的是你的项目是结束。

我已附上我的代码

package com.example.explicitintent;

import java.security.PublicKey;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
    Button b1, b2,b3;
    EditText e1, e2;
    String username="saras", password="greek";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        e1 = (EditText) findViewById(R.id.editText0001);
        e2 = (EditText) findViewById(R.id.editText0002);
        b1 = (Button) findViewById(R.id.button0002);
        b1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) 
            {
                // TODO Auto-generated method stub
                if (username.equals(e1.getText().toString()) && (password.equals(e2.getText().toString())))
                {
                    Intent b = new Intent(MainActivity.this,Contacts.class);
                    String s = e1.getText().toString();
                    String s1 = e2.getText().toString();
                    b.putExtra("d1", s);
                    b.putExtra("d2", s1);
                    startActivity(b);
                }
                else
                {

                    AlertDialog.Builder alt = new AlertDialog.Builder(getApplicationContext()); 

                    alt.setIcon(R.drawable.ic_launcher);
                    alt.setTitle("WARNING");
                    alt.setMessage("Do u want to re-enter password");
                    alt.setPositiveButton("YES", new DialogInterface.OnClickListener() 
                    {

                        @Override
                        public void onClick(DialogInterface arg0, int arg1)
                        {
                            Toast.makeText(getApplicationContext(), "OK", Toast.LENGTH_SHORT).show();

                        }
                    });

                    alt.setNegativeButton("NO",new DialogInterface.OnClickListener()
                    {

                        @Override
                        public void onClick(DialogInterface arg0, int arg1) 
                        {
                            Toast.makeText(getApplicationContext(),"OK", Toast.LENGTH_SHORT).show();

                        }
                    });
                    alt.show();

                }
                }


        });

        b2 = (Button) findViewById(R.id.button0003);
        b2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent c = new Intent(MainActivity.this, Reset.class);
                startActivity(c);
            }
        });

        b3 = (Button) findViewById(R.id.button1);
        b3.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View arg0) 
            {
                Toast.makeText(getApplicationContext(),"Password Saved", Toast.LENGTH_LONG).show();

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }




}

1 个答案:

答案 0 :(得分:3)

更改此行

 AlertDialog.Builder alt = new AlertDialog.Builder(getApplicationContext());

 AlertDialog.Builder alt = new AlertDialog.Builder(arg0.getContext());

您应该将arg0更改为有意义的内容,例如viewv。如果这不起作用,那么请发布logcat,这样我们就可以看到你得到了什么错误。您需要针对具体情况使用相应的Context,并且您希望AlertDialog使用与Activity相同的Context Context Button 1}}(或arg0)使用。

注意 MainActivity.this会在此处与argo.getContext()做同样的事情,但最近我被告知这是一种不好的做法,例如,如果你想重新使用这个然后你必须更改代码的活动名称部分。它是一种不太动态的访问Context的方式。

解决Context问题的

Here is a good SO answer。一开始掌握它可能是一个棘手的概念,所以你可能想要阅读它几次并保持它靠近。