我在新的片段。我有其中有3个侧面的片段。在我登录活动通过它传递sharedpreference的所有数据。当我进入我家的片段,它显示在共享偏好的数据。在我的片段的另一部分是编辑个人资料。它必须找回我的数据,并放入设置的文本。
这里是我的SideProfileFragment
public class SideProfileFragment extends Fragment{
private static final String TAG = SideProfileFragment.class.getSimpleName();
public EditText name, birthDate, address, occupation, gender, number;
SessionManager sessionManager;
String getId;
private static String URL_READ = "http://isalonbyageeks.000webhostapp.com/readDetail.php";
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_sideprofile, container, false);
return view;
}
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
sessionManager = new SessionManager(getActivity());
sessionManager.checkLogin();
name = (EditText) getActivity().findViewById(R.id.userName);
birthDate = (EditText) getActivity().findViewById(R.id.userBirthDate);
address = (EditText) getActivity().findViewById(R.id.userAddress);
occupation = (EditText) getActivity().findViewById(R.id.userOccupation);
gender = (EditText) getActivity().findViewById(R.id.userGender);
number = (EditText) getActivity().findViewById(R.id.userNumber);
HashMap<String, String> user = sessionManager.getUserDetail();
getId = user.get(sessionManager.ID);
}
private void getUserDetail(){
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("Loadingws...");
progressDialog.show();
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_READ,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
progressDialog.dismiss();
Log.i(TAG, response);
try {
JSONObject jsonObject = new JSONObject(response);
String success = jsonObject.getString("success");
JSONArray jsonArray = jsonObject.getJSONArray("read");
if(success.equals("1")){
for(int i = 0; 1 < jsonArray.length();i++){
JSONObject object = jsonArray.getJSONObject(i);
String strName = object.getString ("name");
String strNumber = object.getString("phone_number");
String strGender = object.getString("gender");
String strAddress = object.getString("address");
String strOccupation = object.getString("occupation");
String strBirthDate = object.getString("birth_date");
name.setText(strName);
birthDate.setText(strBirthDate);
address.setText(strAddress);
number.setText(strNumber);
gender.setText(strGender);
occupation.setText(strOccupation);
}
}
} catch (JSONException e) {
e.printStackTrace();
progressDialog.dismiss();
Toast.makeText(getActivity(),"Error Reading Detail" +e.toString(), Toast.LENGTH_LONG).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
progressDialog.dismiss();
Toast.makeText(getActivity(),"Error Reading Detail" +error.toString(), Toast.LENGTH_LONG).show();
}
})
{
@Override
protected Map<String, String> getParams() throws AuthFailureError{
Map<String, String> params = new HashMap<>();
params.put("id", getId);
return super.getParams();
}
};
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
requestQueue.add(stringRequest);
}
@Override
public void onResume(){
super.onResume();
getUserDetail();
}
}
我尝试设置与oncreated视图内的样本“文本”的文本和它的工作。但是当我把文本集功能getUserDetails它没有做任何事情,在我的sideprofile刚刚出现空白编辑文本。
PS我试图把一个示例文本功能的集文本中,但仍没有出去。
这是sideprofilefragment的XML代码,我有。一切都显得那么细!
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:background="@color/black"
xmlns:app="http://schemas.android.com/apk/res-auto">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/settingImageEdit"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:src="@drawable/defaultpic"/>
<TextView
android:id="@+id/editProfilePicture"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/settingImageEdit"
android:layout_marginTop="7dp"
android:text="Edit Photo"
android:layout_centerHorizontal="true"
android:textColor="@color/white"
android:textSize="12sp" />
<AutoCompleteTextView
android:id="@+id/userName"
android:layout_width="300dp"
android:layout_height="35dp"
android:layout_below="@+id/editProfilePicture"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:background="@drawable/rounded_white"
android:drawableLeft="@drawable/ic_user_icon"
android:drawablePadding="5dp"
android:hint="Email/Username"
android:paddingStart="10dp"
android:paddingLeft="10dp"
android:textSize="14sp" />
<AutoCompleteTextView
android:id="@+id/userNumber"
android:layout_width="300dp"
android:layout_height="35dp"
android:layout_below="@+id/userName"
android:layout_marginTop="8dp"
android:layout_centerHorizontal="true"
android:background="@drawable/rounded_white"
android:drawableLeft="@drawable/ic_phone"
android:drawablePadding="5dp"
android:hint="Phone Number"
android:inputType="number"
android:paddingStart="10dp"
android:paddingLeft="10dp"
android:textSize="14sp" />
<AutoCompleteTextView
android:id="@+id/userOccupation"
android:layout_width="300dp"
android:layout_height="35dp"
android:layout_below="@+id/userNumber"
android:layout_marginTop="8dp"
android:layout_centerHorizontal="true"
android:background="@drawable/rounded_white"
android:drawableLeft="@drawable/ic_occupation"
android:drawablePadding="5dp"
android:hint="Occupation"
android:paddingStart="10dp"
android:paddingLeft="10dp"
android:textSize="14sp" />
<AutoCompleteTextView
android:id="@+id/userAddress"
android:layout_width="300dp"
android:layout_height="35dp"
android:layout_below="@+id/userOccupation"
android:layout_marginTop="8dp"
android:background="@drawable/rounded_white"
android:drawableLeft="@drawable/ic_address"
android:layout_centerHorizontal="true"
android:drawablePadding="5dp"
android:hint="Address"
android:paddingStart="10dp"
android:paddingLeft="10dp"
android:textSize="14sp"
tools:ignore="RtlSymmetry" />
<AutoCompleteTextView
android:id="@+id/userGender"
android:layout_width="150dp"
android:layout_height="35dp"
android:layout_below="@+id/userAddress"
android:layout_alignStart="@+id/userName"
android:layout_alignLeft="@+id/userName"
android:layout_marginStart="0dp"
android:layout_marginLeft="0dp"
android:layout_marginTop="8dp"
android:background="@drawable/rounded_white"
android:drawableLeft="@drawable/ic_gender"
android:drawablePadding="5dp"
android:hint="Gender"
android:paddingStart="10dp"
android:paddingLeft="10dp"
android:textSize="14sp" />
<EditText
android:id="@+id/userBirthDate"
android:layout_width="170dp"
android:layout_height="34dp"
android:layout_below="@+id/userGender"
android:layout_alignStart="@+id/userGender"
android:layout_alignLeft="@+id/userGender"
android:layout_marginStart="0dp"
android:layout_marginLeft="0dp"
android:layout_marginTop="8dp"
android:background="@drawable/rounded_white"
android:drawableLeft="@drawable/ic_calendar"
android:drawablePadding="5dp"
android:ems="10"
android:hint="Tap to set Birthdate"
android:inputType="date"
android:paddingLeft="5dp"
android:textSize="14sp" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/userAddress"
android:layout_alignParentBottom="true"
android:layout_marginTop="101dp"
android:layout_centerHorizontal="true"
android:layout_marginBottom="70dp"
android:text="Save Edit" />
</RelativeLayout>
我真的应该需要改变吗?我试图把
name.setText("sample");
在onviewcreated里面,它的工作。但在功能时,它没有。
您的意见将载于通过在视图中
onViewCreated(View view, @Nullable Bundle savedInstanceState)
而不是你的活动,所以你需要用它来指你的变量。
name = (EditText) view.findViewById(R.id.userName);
更改如上所有视图。
更换所有getActivity().findViewById()
到view.findViewById()
name = (EditText) view.findViewById(R.id.userName);
更换所有视图
此外,当您收到从http请求的结果,你需要在UI线程上运行的UI操作。例如:
getActivity().runOnUiThread(new Runnable() {
progressDialog.dismiss();
Log.i(TAG, response);
try {
JSONObject jsonObject = new JSONObject(response);
String success = jsonObject.getString("success");
JSONArray jsonArray = jsonObject.getJSONArray("read");
if(success.equals("1")){
for(int i = 0; 1 < jsonArray.length();i++){
JSONObject object = jsonArray.getJSONObject(i);
String strName = object.getString ("name");
String strNumber = object.getString("phone_number");
String strGender = object.getString("gender");
String strAddress = object.getString("address");
String strOccupation = object.getString("occupation");
String strBirthDate = object.getString("birth_date");
name.setText(strName);
birthDate.setText(strBirthDate);
address.setText(strAddress);
number.setText(strNumber);
gender.setText(strGender);
occupation.setText(strOccupation);
}
}
} catch (JSONException e) {
e.printStackTrace();
progressDialog.dismiss();
Toast.makeText(getActivity(),"Error Reading Detail" +e.toString(), Toast.LENGTH_LONG).show();
}
}
});
1)代替由getActivity().findViewById()
所有view.findViewById()
2)你需要处理的UI设置在另一个线程
try {
Handler uiHandler = new Handler(Looper.getMainLooper());
uiHandler.post(new Runnable() {
@Override
public void run() {
name.setText(strName);
birthDate.setText(strBirthDate);
address.setText(strAddress);
number.setText(strNumber);
gender.setText(strGender);
occupation.setText(strOccupation);
}
});
} catch (Exception e) {
Log.i("bugs", e.getMessage());
e.printStackTrace();
}
3)如果问题仍然存在,也给android:layout_height="match_parent"
所有TextViews和EditTexts