2013-11-26 3 views
1

mysql database.It에서 데이터를 가져 오는 간단한 listview 응용 프로그램을 개발했습니다. 목록보기를 표시했지만 하나의 listview를 선택하면 오류가 발생합니다. java.lang.NullPointerException

단일 목록보기 내 xml 파일,

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<TextView android:id="@+id/product_label" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:textSize="25dip" 
     android:textStyle="bold" 
     android:padding="10dip" 
     android:textColor="#ffffff"/> 
</LinearLayout> 

MainActivity.java 파일입니다

import java.util.List; 

import android.app.ListActivity; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.widget.Toast; 
import android.content.Intent; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 

import android.widget.ListView; 
import android.widget.TextView; 

public class MainActivity extends ListActivity implements FetchDataListener{ 
private ProgressDialog dialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);   
    setContentView(R.layout.activity_main);   
    initView(); 

    ListView lv = getListView(); 

    // listening to single list item on click 
    lv.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 

      // selected item 
      TextView txtview = ((TextView) view.findViewById(R.id.product_label)); 
      String product = txtview.getText().toString(); 

      // Launching new Activity on selecting single List Item 
      Intent i = new Intent(getApplicationContext(), SingleListItem.class); 
      // sending data to new activity 
      i.putExtra("product", product); 
      startActivity(i); 

     } 
    }); 

} 

private void initView() { 
    // show progress dialog 
    dialog = ProgressDialog.show(this, "", "Loading..."); 

    String url = "http://pubbapp.comze.com/pubapp.php"; 
    FetchDataTask task = new FetchDataTask(this); 
    task.execute(url); 
} 

@Override 
public void onFetchComplete(List<Application> data) { 
    // dismiss the progress dialog 
    if(dialog != null) dialog.dismiss(); 
    // create new adapter 
    ApplicationAdapter adapter = new ApplicationAdapter(this, data); 
    // set the adapter to list 
    setListAdapter(adapter);   
} 

@Override 
public void onFetchFailure(String msg) { 
    // dismiss the progress dialog 
    if(dialog != null) dialog.dismiss(); 
    // show failure message 
    Toast.makeText(this, msg, Toast.LENGTH_LONG).show();   
} 
} 

이 단일 목록 활동 자바 파일,

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.TextView; 

public class SingleListItem extends Activity{ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.single_list_item_view); 

    TextView txtProduct = (TextView) findViewById(R.id.product_label); 

    Intent i = getIntent(); 
    // getting attached intent data 
    String product = i.getStringExtra("product"); 
    // displaying selected product name 
    txtProduct.setText(product); 

} 
} 

이 오류 메시지는

입니다.
11-27 00:11:25.210: E/AndroidRuntime(9924): FATAL EXCEPTION: main 
11-27 00:11:25.210: E/AndroidRuntime(9924): java.lang.NullPointerException 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at com.sj.jsondemo.MainActivity$1.onItemClick(MainActivity.java:35) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at android.widget.ListView.performItemClick(ListView.java:3745) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1980) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at android.os.Handler.handleCallback(Handler.java:587) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at android.os.Handler.dispatchMessage(Handler.java:92) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at android.os.Looper.loop(Looper.java:130) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at android.app.ActivityThread.main(ActivityThread.java:3691) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at java.lang.reflect.Method.invoke(Method.java:507) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
11-27 00:11:25.210: E/AndroidRuntime(9924):  at dalvik.system.NativeStart.main(Native Method) 
11-27 00:11:59.925: I/Process(9924): Sending signal. PID: 9924 SIG: 9 

나는이 문제를 풀려고했지만이 해결책을 찾지 못했습니다. 저를 도와주세요.

+1

스택 추적을 게시 할 수 있습니까? – Raghunandan

+1

'getListView'가 존재하지 않습니다. – Manitoba

+0

logcat 로그를 게시하십시오 – user755

답변

0

아래와 같이 ListView에 포함되어 있어야합니다 activity_main.xml하는 당신에
activity_main.xml 완벽하게 지원하시기 바랍니다 :

ListView android:id="@id/android:list" 
0

해당 항목을 클릭하면, 그것은 널을 가리키는 때문이다 값을 사용하면 데이터베이스에서 가져올 수있는 값이 없을 수 있습니다. 해당 null 포인터 위치에 중단 점을 유지하고 그 값을 검색하십시오.

+0

에 팽창하지만 여전히이 오류가 발생합니다 게시 할 수 있습니다. – user2881604

+0

당신이 얻고있는 가치는 무엇입니까 ?? 데이터 유형이 값을 확인하지 않습니다 – srikayala

+0

내 목록보기의 값이 1,2, .. 및 2013-11-27과 비슷합니다. – user2881604

관련 문제