2013-08-27 1 views
1

암호와 로그인 ID가 일치하지 않을 때 표시 할 대화 상자를 표시하려고합니다. 다음 코드를 시도했지만 텍스트가 동일하면 실행하면 암호와 로그인 ID가 일치하지 않으면 경고 메시지가 표시되지만 불행히도 프로세스가 종료됩니다. 끝났다.안드로이드에 if else 문 안에 경고 대화 상자를 추가하고 싶습니다.

나는

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

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; 
    } 




} 
+0

AlertDialog.Builder의 getApplicationContext() 대신 MainActivity.this를 입력하십시오. – Aravin

답변

3

변경 아래에이 줄

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

을 내 코드를 첨부하면 view 또는 v 같은 의미있는 뭔가 arg0을 변경해야합니다. 그래도 작동하지 않으면 logcat을 게시하여 어떤 오류가 발생했는지 확인할 수 있습니다. 상황에 맞는 Context을 사용해야하고 여기서 AlertDialogButton (또는 arg0)과 동일한 ContextActivityContext을 사용하기를 원합니다. 당신의 활동 이름 부분을 변경해야

참고MainActivity.thisargo.getContext() 여기에 같은 일을하지만 나는 최근에 그런 당신이 다음이 코드를 다시 사용하려는 경우와 같은 이유로 나쁜 관행이 정보통이었다 암호. 덜 동적 인 방법으로 Context에 액세스합니다.

Here is a good SO answerContext의 문제를 해결합니다. 그것은 처음에는 파악하기 까다로운 개념 일 수 있으므로, 몇 번 읽고 다시 읽어야 할 수도 있습니다.