php - 结果未从 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);
?>
解决方案
推荐阅读
- arrays - 将矩阵拆分为具有不同列大小的数组
- angular - Angular ErrorInterceptor 单元测试未按预期工作
- api - 使用自定义处理程序测试 API 端点时无法访问多路复用器参数
- xml-documentation - Sandcastle 帮助文件生成器崩溃
- elasticsearch - 在 ElasticSearch 中是否可以对非索引字段求和?
- azure-devops-rest-api - 尝试将虚拟机附加到环境时,resourceId 参数是什么?
- excel - 如何在不替换以前的旧文本的情况下向形状添加文本
- spring - 如何进行多对多关系插入
- amazon-web-services - 将数据从 s3 加载到 redshift 时出现问题
- rss - 我应该在 RSS 2.0 提要中跳过还是显示空字段?