私は自分のアプリがPixel 3で動作していないことに気付きました。Androidスタジオに入り、いくつかのデバイスをエミュレートしましたが、どのAndroid Pieでも動作していないことに気付きました。 (API 28)デバイスですが、他のデバイスでは問題なく機能します。コード全体にいくつかのログを記録しましたが、Volleyの使用中に応答が得られなかったようです。アプリ自体は読み込まれますが、データは表示されません。エラーが表示されます
E/RecyclerView:アダプターが接続されていません。レイアウトをスキップ
私のコードは
import Android.content.Intent;
import Android.os.Bundle;
import Android.os.Handler;
import Android.util.Log;
import Android.support.v7.app.AppCompatActivity;
import Android.view.WindowManager;
import com.Android.volley.Request;
import com.Android.volley.Response;
import com.Android.volley.VolleyError;
import com.Android.volley.toolbox.StringRequest;
import com.Android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
DatabaseManagement db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
db = new DatabaseManagement(this);
grabData();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(MainActivity.this, com.hellapunk.hellapunk.feature.Main2Activity.class);
startActivity(i);
finish();
}
}, 3000);
}
public void grabData() {
//Log.i("Made it", "You made it this far");
String url = "http://hellapunk.com/listallshows.php?id=2018";
StringRequest sr = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray showInfo = new JSONArray(response);
Log.i("Something", "response");
for (int i = 0; i < showInfo.length(); ++i) {
JSONObject showInfo1 = showInfo.getJSONObject(i);
if ((db.checkShow(showInfo1.getString("show_summary"),
showInfo1.getString("show_date"))) > 0) {
Log.i("Results", "Show already exists");
} else {
db.insertShows(showInfo1.getString("show_summary"),
showInfo1.getString("venue_name"),
showInfo1.getString("show_date"),
showInfo1.getString("shows_img"),
showInfo1.getString("venue_address"),
showInfo1.getString("city_name"),
showInfo1.getString("city_region"));
}
}
} catch (Exception e) {
Log.i("Error", e.getMessage());
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i("TAG", ""+error);
}
});
Volley.newRequestQueue(this).add(sr);
}
}
スプラッシュスクリーンの間にデータを取得し、ローカルデータベースに保存します。次に、次のアクティビティのdbから呼び出されます。アドバイスがあれば大歓迎です!
または、Androidマニフェストのapplication要素の下でusesCleartextTraffic属性を使用できます。Android Pのデフォルト値は「false」です。
<application
Android:usesCleartextTraffic="true"
</application>
ただし、minSdkVersion 23以降が必要です。
この問題について、私はhttpsを使用しており、今はうまく機能しています