首页 > 解决方案 > 结果未从 PHP API、MySQL 到 Android Studio 提取到 Spinner

问题描述

package com.example.swachkaryalaya;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toolbar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.JsonRequest;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.android.material.tabs.TabLayout;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import android.app.FragmentManager;

public class MainActivity extends AppCompatActivity
 {

public Spinner spinner;
public JSONArray result;

public ArrayList<String> officelist;
ArrayAdapter<String> officeadapter;
RequestQueue requestQueue;

public TextView textView2;
public TextView textView3;
public TextView textView4;
public TextView textView5;


 ProgressDialog progressDialog;
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);


    requestQueue= Volley.newRequestQueue(this);

    spinner = (Spinner) findViewById(R.id.spinner);
  
     String url= "http://10.184.200.4:801/skPhp/officeApi.php";

  

    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {

                   try {
                       JSONArray jsonArray = response.getJSONArray("result");

                for(int i=0; i<jsonArray.length(); i++) {
                    JSONObject jsonObject = jsonArray.getJSONObject(i);
                    String officeName = jsonObject.optString("office_name");

                    officelist.add(officeName);
                  
                    officeadapter= new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item,officelist);
                    officeadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                    spinner.setAdapter(officeadapter);
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

    },

            new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });
     RequestQueue requestQueue = Volley.newRequestQueue(this);
    //requestQueue.add(JsonObjectRequest);
}
}

在编译期间不会出现任何错误,但 Spinner 在设备中运行时不是人口数据。请给出可能的解决方案。

我的清单如下

 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 package="com.example.dataentryapp">
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

 <application
    android:usesCleartextTraffic="true"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.DataEntryApp">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

PHP API 在使用 POSTMAN 以及在浏览器中运行良好

结果未获取数据

Spinner 在设备中运行时未获取数据

我的 PHP API 如下。

<?php 

require_once('dbConnect.php');

header('Access-Control-Allow-Origin: *');
header("Content-type: application/json; charset=utf-8");
$json = json_decode(file_get_contents('php://input'), true);

$sql = "SELECT office_name FROM officetable";

$r = mysqli_query($conn,$sql);


$result = array();

while($row = mysqli_fetch_array($r)){
    array_push($result,array(
      'office_name'=>$row['office_name']
    
     ));
 }

  echo json_encode(array('result'=>$result));




   mysqli_close($conn);
  ?>

标签: phpandroidmysqlxampp

解决方案


推荐阅读