마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 초보 질문 드립니다.

0 추천
package com.example.project;

import org.json.JSONObject;

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

public class MainActivity extends Activity {
 EditText editID;
 EditText editPwd;
 Intent intent;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        Button btn=(Button)findViewById(R.id.btn_Search);
        editID = (EditText)findViewById(R.id.editID);
  editPwd = (EditText)findViewById(R.id.editPwd);
       
        btn.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
   intent = new Intent(MainActivity.this, SecondActivity.class);
   startActivity(intent);
   }
  });
    }

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

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // TODO Auto-generated method stub
  switch (item.getItemId()) {
  case R.id.manager:
   final LinearLayout linear = (LinearLayout)View.inflate(this, R.layout.login_dialog, null);
   new AlertDialog.Builder(this)
   .setTitle("관리자 Login")
   .setView(linear)
   .setPositiveButton("로그인", new DialogInterface.OnClickListener() {
    
    @Override
    public void onClick(DialogInterface arg0, int arg1) {
     // TODO Auto-generated method stub
     String ID = editID.getText().toString();
     String Pwd = editPwd.getText().toString();
     
     if(ID == "2008" && Pwd == "1717") {
      Toast.makeText(MainActivity.this, "로그인 되었습니다.", 1).show();
      intent = new Intent(MainActivity.this, ManagerActivity.class);
      startActivity(intent);
     }else{
      Toast.makeText(MainActivity.this, "입력한 정보가 틀렸습니다..", 1).show();
      finish();
     }
     
    }
   })
   .setNegativeButton("취소", new DialogInterface.OnClickListener() {
    
    @Override
    public void onClick(DialogInterface dialog, int which) {
     // TODO Auto-generated method stub
     
    }
   } )
   .show();
  }
  return super.onOptionsItemSelected(item);
 }
   
}

옵션메뉴에서 메뉴를 클릭하면 다이얼로그 창이 나오는데

거기에 관리자 아이디 비번을 입력하면 다음 화면 넘어가는건데

확인버튼을 누르면 프로그램이 종료됩니다.

logcat을 보니 nullpointer exception이라고 뜨는데 이유좀 알려주시고

수정좀 부탁드립니다. ㅠㅠ
마봉자 (190 포인트) 님이 2013년 12월 20일 질문

1개의 답변

+1 추천

nullpointer exception

객체가 제대로 생성되지 않았는데 객체를 사용해서 그렇습니다.

로그 확인해보면 에러난 라인 나올거에요 해당 라인에 객체가 생성이 제대로 되었는지 확인해보세요.

 

그리고 문자열 비교는 == 로 하지않고 equals함수로 해야합니다. "2008".equals(ID) && "1717".equals(Pwd)

얼룩돼지 (15,720 포인트) 님이 2013년 12월 20일 답변
문자열 비교 == 알려주셔서 감사합니다. 근데 로그 확인 하는데 2008위에 string pwd로 가는데 여기서 오류가 없는것 같은데 이해가 안되네요 ㅠ
그부분에서 에러가 났으면 editPwd가 제대로 객체가 생성이 안된거네요.
해당라인에 브레이크포인트걸고 디버깅모드로 실행시켜보시고 객체가 제대로 생성되는지 확인해보시고 생성이 제대로 안되었다면 xml에서 id가 제대로 되어있나 그런 확인들을 해보세요.
...