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

다이얼로그에서 값 입력 받아 액티비티 전환

0 추천

액션바에서 아이콘 클릭시 EditText가 포함된 다이얼로그를 띄우고

EditText를 입력한 후 확인을 누르면 

EditText의 값을 다른 액비티비에 전달하는 부분을 구현 하고 있습니다.

그런데 확인을 누르면 화면이 멈추면서 앱이 종료 됩니다.

EditText 객체를 주석처리하고 액티비티 전환만 시키면 잘돌아가는데

객체를 선언하고 값을 넣어주는 경우에만 에러가 발생합니다.

하루종일 고민 했는데 해결이 안됩니다 도와주세요 ㅠ

액션바의 아이템 클릭 코드(다이얼로그 출력)

@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		String text = null;
		
		switch(item.getItemId()){
		case android.R.id.home:
			text = "Application icon";
			break;
			
		case R.id.item1:
			
			break;
			
		case R.id.action_search:
			Context mContext = getApplicationContext();
			LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
			View layout = inflater.inflate(R.layout.dialog,(ViewGroup) findViewById(R.id.layout_root));
									
			AlertDialog.Builder aDialog = new AlertDialog.Builder(SearchActivity.this);
			aDialog.setTitle("검색 창");
			aDialog.setView(layout);
									
			aDialog.setPositiveButton("검색", new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					EditText tv = (EditText)findViewById(R.id.text);
					String message = tv.getText().toString();
					flag = 0;
					
	            	   intent = new Intent(SearchActivity.this, SearchListActivity.class);
		       		  // intent.putExtra("Message", message);
		       		   intent.putExtra("flag", flag);
		               startActivity(intent);
		               finish();
				}
			});
			aDialog.setNegativeButton("취소", new DialogInterface.OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
				}
			});
			AlertDialog ad = aDialog.create();
			ad.show();
			
		}
		
		return true;
	}

 

전환 되는 액티비티

@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.searchlist);
		getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#0caaf1"))); 
		Intent intent = getIntent();
		//플래그에 따라 다른 xml주소 불러오기
		int flag = intent.getExtras().getInt("flag");
		String code;
		String Message;
		
		if(flag==1){
			//SearchActivity에서 code 값 받음
			code = intent.getExtras().getString("code");
			
			//SearchActivity에서 전달 받은 code 값에 맞는 xml을 받아온다
			rssFeed = "http://pro87.cafe24.com/getSearchProductList.do?classifyCode="+code;
		}else if(flag==0){
			//SearchActivity에서 Message 값 받음
			Message = intent.getExtras().getString("Message");
			
			//SearchActivity에서 전달 받은 Message 값에 맞는 xml을 받아온다
			rssFeed = "http://pro87.cafe24.com/getSearchProductList.do?productName="+Message;
		}

 

에러코드 입니다.

07-07 18:56:43.019: E/AndroidRuntime(10960): FATAL EXCEPTION: main
07-07 18:56:43.019: E/AndroidRuntime(10960): java.lang.NullPointerException
07-07 18:56:43.019: E/AndroidRuntime(10960): at com.example.project.SearchActivity$3.onClick(SearchActivity.java:355)
07-07 18:56:43.019: E/AndroidRuntime(10960): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
07-07 18:56:43.019: E/AndroidRuntime(10960): at android.os.Handler.dispatchMessage(Handler.java:99)
07-07 18:56:43.019: E/AndroidRuntime(10960): at android.os.Looper.loop(Looper.java:137)
07-07 18:56:43.019: E/AndroidRuntime(10960): at android.app.ActivityThread.main(ActivityThread.java:4921)
07-07 18:56:43.019: E/AndroidRuntime(10960): at java.lang.reflect.Method.invokeNative(Native Method)
07-07 18:56:43.019: E/AndroidRuntime(10960): at java.lang.reflect.Method.invoke(Method.java:511)
07-07 18:56:43.019: E/AndroidRuntime(10960): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
07-07 18:56:43.019: E/AndroidRuntime(10960): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
07-07 18:56:43.019: E/AndroidRuntime(10960): at dalvik.system.NativeStart.main(Native Method)
 
니워워 (260 포인트) 님이 2014년 7월 7일 질문

2개의 답변

0 추천
 
채택된 답변

결론부터 말씀드리면

다이얼로그 뷰에서 에디트텍스트 위젯을 찾아야하는데~

현재 액티비티의 뷰에서 에디트텍스트 위젯을 찾고 있으니 에러가 발생합니다.

따라서 아래와 같이 하시면 되겠어요

EditText et = (EditText) layout.findViewById (R.id.text); 

초보개발자ㅠ (33,870 포인트) 님이 2014년 7월 8일 답변
니워워님이 2014년 7월 9일 채택됨
감사합니다. 알려주신 방법대로 해서 해결했습니다!
0 추천
java.lang.NullPointerException
07-07 18:56:43.019: E/AndroidRuntime(10960):  at com.example.project.SearchActivity$3.onClick(SearchActivity.java:355)
 
음.. 일단 로그 보는 방법부터 배우셔야 겠네요.. 
갈무리 (12,430 포인트) 님이 2014년 7월 8일 답변
...