public class List extends Activity {
private ItemView itemview;
@Override
protected void onListItemClick(android.widget.ListView l, View
v,
int position, long id) {
//// 생략 ////
String
name=cursor.getString(cursor.getColumnIndex("car_name")); //name 을
받고
itemview.setdata(name); //itemview 클래스의 setdata 매소드에 name 값을 넘김니다 그런데
이 부분에서
nullpointer 에러가 발생을 합니ㅏ
Intent intent=new
Intent(ListView.this,ItemView.class); //intent 를 실행하여 itemview 클래스로
넘어갑니다
startActivity(intent);
cursor.close();
}
public class ItemView extends Activity {
private static TextView
view;
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method
stub
super.onCreate(savedInstanceState);
setContentView(R.layout.item);
view=(TextView)findViewById(R.id.textView2);
}
public
static void setdata(String m){
view.setText(m); //name 값으
받아와서 textview 부분을 set 하는 부분
}
}
왜 에러가 발생을 할까요 ㅠ
static에 대해서 공부를좀 해보셔야 겠네요.
itemview.setdata를 하게 되었을때 ItemView Class의 view라는 TextView는 아직 생성이 되지 않은 상태 입니다.
그러니 nullpointer가 떨어 지지요.
이거 말고 intent에 data를 담아서 보내세요.
intetn.putExtra();에 key값과 value로 보내 시면
해당하는 부분에서 받을수 있습니다. 좀 수정해 보면.
Intent intent=new Intent(ListView.this,ItemView.class); //intent 를 실행하여 itemview 클래스로 넘어갑니다
intent.putExtra("key_Name", name);
startActivity(intent);
받는 class
setContentView(R.layout.item);
view=(TextView)findViewById(R.id.textView2);
Intent intent = this.getIntent();
String name = intent.getStringExtra("key_Name");
view.setText(name);
이렇게 하시면 되겠습니다.
itemview가 생성된 적이 없으니까 null이 뜨겠죠?
당연히 위에 처럼 쓰시면 안되지만, static으로 하시려면 ItemView.setdata(name)을 하셨어야 될 듯 하네요.
http://developer.android.com/training/basics/firstapp/starting-activity.html
다시 한번 읽어보세요