如何解决Android PHP数据仅显示第一次
早上好,我正在尝试创建一个带有底部导航菜单的应用程序,该菜单将带您进入一些片段。在概要文件片段中,我创建了一个TabLAyout,它可以加载其他三个子片段。现在,我尝试使用Api从PHP和Mysql加载数据,并且它可以在Profile片段中工作(它显示用户名以及是否跟随他),但是在TabLayout的三个子片段中,当我尝试加载时其他数据(例如个人信息)仅在其第一次使用并显示数据时。实际上,如果您完全更改片段,然后返回三个子片段,则它们什么也不会显示。 这是三个子片段之一的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".InfoProfileFragment">
<TextView
android:id="@+id/nome"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Nome Cognome"
android:textAlignment="center"
android:paddingTop="20dp"
android:textStyle="bold"
android:textColor="#000000"
android:textSize="20dp"/>
<TextView
android:id="@+id/nazione"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="Italy"
android:textAlignment="center"
android:textColor="#000000"
android:drawablePadding="10dp"
android:gravity="center"
android:layout_gravity="center"
android:textSize="19dp"/>
<TextView
android:id="@+id/compleanno"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAlignment="center"
android:layout_marginTop="20dp"
android:textSize="18dp"/>
<TextView
android:id="@+id/biografia"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textSize="16dp"
android:textStyle="italic"
android:paddingLeft="40dp"
android:paddingRight="40dp"
android:textAlignment="center"
android:text="Biografia bla bla bla bla bla bla"/>
</LinearLayout>
和Java:
package com.example.myapp;
import android.content.Context;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.RequiresApi;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
public class InfoProfileFragment extends Fragment {
View view;
String user;
TextView nome,nazione,biografia,compleanno;
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_info_profile,container,false);
nome = (TextView) view.findViewById(R.id.nome);
nazione = (TextView) view.findViewById(R.id.nazione);
biografia = (TextView) view.findViewById(R.id.biografia);
compleanno = (TextView) view.findViewById(R.id.compleanno);
caricaInfo("Tommy03");
/*
final SwipeRefreshLayout pullToRefresh = view.findViewById(R.id.pullToRefresh);
pullToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
caricaInfo("Tommy03");
pullToRefresh.setRefreshing(false);
}
});
*/
return view;
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
private void caricaInfo(final String username) {
StringRequest stringRequest = new StringRequest(Request.Method.POST,Constants.URL_INFO,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
nome.setText(jsonObject.getString("nome"));
nazione.setText(jsonObject.getString("nazione"));
biografia.setText(jsonObject.getString("biografia"));
compleanno.setText(jsonObject.getString("compleanno"));
nazione.setCompoundDrawablesWithIntrinsicBounds(R.drawable.flag_italy,0);
} catch (JSONException e) {
e.printStackTrace();
}
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
ViewDialog alert = new ViewDialog();
alert.showDialog(getActivity(),error.getMessage());
}
}) {
@Override
protected Map<String,String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
params.put("username","Tommy03");
return params;
}
};
RequestHandler.getInstance(getContext()).addToRequestQueue(stringRequest);
}
}
P.S。我还尝试放置一个Timer,它每秒更新一次信息,但是在子片段中它不起作用,它仅在ProfileFragment中起作用。 可能是什么问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。