设置文本从功能不显示片段内

问题描述 投票:-1回答:3

我在新的片段。我有其中有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里面,它的工作。但在功能时,它没有。

java android
3个回答
1
投票

您的意见将载于通过在视图中

onViewCreated(View view,  @Nullable Bundle savedInstanceState) 

而不是你的活动,所以你需要用它来指你的变量。

name = (EditText) view.findViewById(R.id.userName);

更改如上所有视图。


1
投票

更换所有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();
                    }

                }      
});

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.