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

nullpointexception 에러 질문입니다.

0 추천

 

안녕하세요 안드로이드 초보자입니다. 
스피너의 선택값을 onclick함수에 보여주려고 하는데 자꾸 nullpoint에러가 나네요
그리고 특정홈페이지의 소스도 보여주는 부분이 작동되지 않아 고민고민하다 이렇게 글을 씁니다.
 
1. 책에서 예제를 돌렸을때는 
String str_local = spinner.getSelectedItem().toString(); 
이 코드에 아무런 문제가 없이 잘 실행되는 반면 제 프로젝트에 삽입했을때에는 자꾸 프로그램이 꺼지는 에러가 뜹니다.
logcat에는 nullpoint에러라고 뜹니다.
 
2. 특정 홈페이지에 들어가서 소스를 불러오는 부분도 작동되지 않고 있어요 ㅠ
 
제가 무엇을 잘못하고 있는건가요.. ㅠ_ㅠ
하루종일 한줄도 코딩하지 못하고 있는 상태입니다... 힝 ㅠㅠ
 
코드는 다음과 같습니다.
 
 
package com.example.graduate_project;
 
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
 
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
 
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
 
public class Main extends Activity implements OnClickListener{
Spinner spinner;
 
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
 
//스피너 출력시작
ArrayAdapter<CharSequence> adapter= ArrayAdapter.createFromResource(this, R.array.localArr, android.R.layout.simple_spinner_dropdown_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner spinner=(Spinner)findViewById(R.id.spinner_local);
spinner.setAdapter(adapter);
 
//button 생성
        Button btn = (Button)findViewById(R.id.btn_send);
        btn.setOnClickListener(this);
}
 
//button 클릭시 반응
@Override
public void onClick(View v) {
 
String str_local = spinner.getSelectedItem().toString(); 
AlertDialog.Builder alert = new AlertDialog.Builder(this);
alert.setTitle(strlocal);
alert.show();
 
EditText et_web_src = (EditText)findViewById(R.id.web_src);
URL url = null;
HttpURLConnection urlConnection = null;
BufferedInputStream buf = null;
 
try{
urlConnection = (HttpURLConnection) url.openConnection();
 
buf = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader bufreader = new BufferedReader(new InputStreamReader(buf, "euc-kr"));
 
String line = null;
String page = null;
 
while ((line=bufreader.readLine()) !=null){
page += line;
}
 
et_web_src.setText(page);
 
} catch(Exception e){
et_web_src.setText(e.getMessage());
 
} finally {
urlConnection.disconnect();
 
}
 
 
 
 
}
 
}
 
아미리소 (190 포인트) 님이 2013년 4월 15일 질문
spinner 필드 선언하세요.

1개의 답변

0 추천
 
채택된 답변

1. spinner를 멤버 필드로 선언해 주고 onCreate에서 다시 spinner 객체를 새로 만드시니까

멤버필드인 spinner는 null이죠.

Spinner spinner;
 
@Override
public void onCreate(Bundle savedInstanceState) {


Spinner spinner=(Spinner)findViewById(R.id.spinner_local);

}

onCreate의 Spinner spinner=(Spinner)findViewById(R.id.spinner_local); 를

spinner=(Spinner)findViewById(R.id.spinner_local); 이렇게 고쳐야 겠죠.

 

2. 특정 홈페이지에 들어가서 소스를 불러오는 부분도 작동되지 않고 있어요

-> 스레드로 돌리세요!! 책에 옛날 책인것 같습니다. 예전에는 네트워크 작업을 그냥 해도 괜찮지만

3.0 이상 부터는 스레드로 따로 작업을 시켜야 합니다.

 

 

글을 보니까 프로그래밍 자체를 거의 처음 하신 것 같은데

안드로이드 책만 보고 따라하지 말고 java 공부도 같이 병행하면서 하세요.

그리고 질문하실 때는 로그도 같이 올려주세요.

원조안드로이드 (58,190 포인트) 님이 2013년 4월 15일 답변
아미리소님이 2013년 4월 15일 채택됨
...