2017-07-27 56 views
0

我想在我的应用程序的phpmyadmin显示数据库中的用户名的列表,但我不断收到以下数据没有被显示在列表视图我从数据库

Unable to start activity ComponentInfo{ie.example.artur.adminapp/ie.example.artur.adminapp.ShowUsers}: java.lang.NullPointerException: storage == null 

我明白这意味着数据没有被发送,因此选择时活动无法启动,列表为空,但是我的问题为什么列表中没有填充数据?

这是我ShowUser活动

package ie.example.artur.adminapp; 

import android.content.Intent; 
import android.os.Bundle; 
import android.os.StrictMode; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Toolbar; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 

import android.view.View; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONObject; 

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.List; 

import static android.R.attr.name; 

/** 
* Created by family on 24/07/2017. 
*/ 

public class ShowUsers extends AppCompatActivity { 


    ListView lv; 
    //String[] names = {"Amy","John","Joseph","Carl"}; 
    InputStream is = null; 
    String line= null; 
    String result = null; 
    String temp=""; 
    String[] arr; 



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

     lv = (ListView) findViewById(R.id.lv); 

     //Inlfate the list view with the items 

     lv.setAdapter(new ArrayAdapter<String>(ShowUsers.this,android.R.layout.simple_list_item_1,arr)); 

     android.widget.Toolbar toolbar = (android.widget.Toolbar) findViewById(R.id.toolbar); 

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     //set up the code to fetch data from the database 


     try { 
      HttpClient httpClient = new DefaultHttpClient(); 

      HttpPost httpPost = new HttpPost("http://10.3.2.51/www/"); 

      HttpResponse response = httpClient.execute(httpPost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
      //SETUP THE INPUTSTREAM TO RECEIVE THE DATA (INITIAL) 
     }catch (Exception e){ 
      System.out.println("Exception 1 caught"); 
     } 

     try { 

      BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
      // Create a String builder object to hold the data 
      StringBuilder sb = new StringBuilder(); 
      while((line = reader.readLine())!=null) 
       sb.append(line+"\n"); 


      //Use the toString() method to get the data in the result 

      result = sb.toString(); 
      is.close(); 
      //check the data by printing the results in the logcat 

      System.out.println("-----Here is my data -----"); 
      System.out.println(result); 

     }catch(Exception e){ 
      System.out.print("Exception 2 caught"); 
     } 

     try{ 

      JSONArray jsonArray = new JSONArray(result);//Create a json array 
      int count = jsonArray.length(); 


      for(int i=0; i<count; i++){ 
       //create a json object to extract the data 
       JSONObject json_data = jsonArray.getJSONObject(i); 
       temp +=json_data.getString("name")+":"; 
       //where name is attribute of the getdata table 
       //using ':' as the delimiter 

      } 

      //Afer receiving everything store the contents in a string array from temo separated using the delimiter 
      arr = temp.split(":"); 
      //set the list adapter with the array arr 

      lv.setAdapter(new ArrayAdapter<String>(ShowUsers.this,android.R.layout.simple_list_item_1, arr)); 

     }catch(Exception e){ 
      System.out.println("I am really bored of writing all these exception blocks"); 
     } 



    } 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     { 
      switch (item.getItemId()) 
      { 
       case R.id.action_settings : startActivity (new Intent(this, ShowUsers.class)); 
        break; 
      } 
      return super.onOptionsItemSelected(item); 
     }} 




} 

这是从数据库中的表用户在phpMyAdmin:

enter image description here

而且这个地方我有我的tut.php文件保存: enter image description here

tut.php:

<?php 

$con=mysql_connect("localhost","root",""); 
mysql_select_db("socialmedia_website",$con); 

$r=mysql_query("select name from users where 1"; 

while($row=mysql_fetch_array($r)) 

    { 

     $out[]=$row; 
    } 

    print(json_encode($out)); 
    mysql_close($con) 

*此外,我正在使用Android设备做这个项目

这是我收到回: enter image description here

+2

不使用mysql_ *。只使用mysqli_ * –

+2

** mysql **已被弃用,并在PHP 7中完全删除。使用** mysqli **或** PDO **代替 –

+0

@ B.Desai是的,我知道我只是没有意识到,因为我正在关注视频教程 – Lucy

回答

1

您在此处输入错误。你错过了)右括号

$r=mysql_query("select name from users where 1"); 

注:使用mysqli_ *功能。

+0

是的,我已经修复,但空白屏幕只是出现,它的空:/ – Lucy

+0

不查询返回值? – NID

+0

我认为这可能有所帮助:https://stackoverflow.com/questions/16777829/java-lang-runtimeexception-unable-to-start-activity-componentinfo-java-lang-nu – NID

0
$r=mysql_query("select name from users where 1"; 

您有什么问题与您的查询,你错过了结束括号。

您的查询应该看起来像这样。

$r=mysql_query("select name from users where 1"); 
+0

WHERE 1是“真”还是“全部”的同义词。 – NID

+1

谢谢你纠正我,这是我的错误。 – Asim

0

setAdapter线重复2 times.so删除第一个,因为那个时候ARR值为null这就是为什么你所得到的NullPointerException

lv = (ListView) findViewById(R.id.lv); 
lv.setAdapter(new ArrayAdapter<String>(ShowUsers.this,android.R.layout.simple_list_item_1,arr)); //remove this 
相关问题