如何在另一种方法中调用刷新我的片段类(我在堆栈溢出上尝试了所有解决方案)



>我有一个void方法syncNum(String String String(,它将在onViewCreated中触发,这一行。

 new DisDepartmentSender(myView.getContext(), urlAddress, accountEmail, departmentName).execute();

它将从数据库中获取数据,最后传回并将数据设置到此方法 syncNum(字符串字符串字符串(中。设置数据后,我希望使用文本视图显示它。我认为唯一的方法是再次执行 onViewCreated 方法,因为我们无法在 syncNum 方法中设置文本。我已经在方法中尝试了许多分离和附加方法,但问题是它得到了 NullPointer 我不知道如何解决我已经在寻找 1 天只是为了这个小问题。我需要你们的帮助。

当前部门视图片段类

    package com.example.cheng.freequeue.DisplayDepartmentStatus;
    import android.app.Fragment;
    import android.content.Context;
    import android.os.Bundle;
    import android.os.Handler;
    import android.support.annotation.Nullable;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    import com.example.cheng.freequeue.R;
    /**
     * Created by cheng on 11/4/2018.
     */
    public class CurrentStatusView extends Fragment {
        DisDepartmentList disDepartmentList=new DisDepartmentList();
        final static String urlAddress = "https://kokcheng95.000webhostapp.com/departmentStatus.php";
        private String CompanyName, accountEmail, departmentName, imageUrl;
        private String num1room1, num2room2, num3room3, num1, num2, num3, room1, room2, room3;
        private final Handler handler = new Handler();
        View myView;
        Context c;
        ViewGroup container;
        private LayoutInflater inflater;
        TextView company_name, department_name, num_1, num_2, num_3, room_1, room_2, room_3;
        de.hdodenhof.circleimageview.CircleImageView image_department;

        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
            myView = inflater.inflate(R.layout.current_department_view, container, false);
            this.container=container;
            company_name = (TextView) myView.findViewById(R.id.company_name);
            department_name = (TextView) myView.findViewById(R.id.department_name);
            image_department = (de.hdodenhof.circleimageview.CircleImageView) myView.findViewById(R.id.image_department);
           num_1 = (TextView) myView.findViewById(R.id.number1);
            num_1 = (TextView) myView.findViewById(R.id.number1);
            num_2 = (TextView) myView.findViewById(R.id.number2);
            num_3 = (TextView) myView.findViewById(R.id.number3);
            room_1 = (TextView) myView.findViewById(R.id.room1);
            room_2 = (TextView) myView.findViewById(R.id.room2);
            room_3 = (TextView) myView.findViewById(R.id.room3);
            new DisDepartmentSender(myView.getContext(), urlAddress, accountEmail, departmentName).execute();
            //Set data
            company_name.setText("Company Name : " + CompanyName);
            department_name.setText("Department : " + departmentName);
            PicassoClientDepartment.dowloadImage(myView.getContext(), imageUrl, image_department);

            //Set Data
            num_1.setText(num1);
            num_2.setText(num1);
            num_3.setText(num1);
            room_1.setText(room1);
            room_2.setText(room2);
            room_3.setText(room3);


            return myView;
        }
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Bundle bundle = this.getArguments();
            if (bundle != null) {
                CompanyName = bundle.getString("CompanyName", "noText");
                accountEmail = bundle.getString("accountEmail", "noText");
                departmentName = bundle.getString("departmentName", "noText");
                imageUrl = bundle.getString("imageUrl", "noText");

            }

        }

        public void synchronizeNum(String num1room1, String num2room2, String num3room3) {
            String path1[] = num1room1.split("_");
            String path2[] = num2room2.split("_");
            String path3[] = num3room3.split("_");

            num1 = path1[0];
            room1 = path1[1];
            num2 = path2[0];
            room2 = path2[1];
            num3 = path3[0];
            room3 = path3[1];

    /*       Fragment currentFragment = getActivity().getFragmentManager().findFragmentByTag("CurrentStatusView");
                FragmentTransaction fragTransaction =   (getActivity()).getFragmentManager().beginTransaction();
                fragTransaction.detach(currentFragment);
                fragTransaction.attach(currentFragment);
                fragTransaction.commit();*/
        }

        public void setNum1room1(String num1room1) {
            this.num1room1 = num1room1;
        }
        public String getNum1room1() {
            return num1room1;
        }
        public void setNum2room2(String num2room2) {
            this.num2room2 = num2room2;
        }
        public String getNum2room2() {
            return num2room2;
        }

        public void setNum3room3(String num3room3) {
            this.num3room3 = num3room3;
        }
        public String getNum3room3() {
            return num3room3;
        }
    }

current_department_view.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.cheng.freequeue.LoginPage">

        <TextView
            android:id="@+id/department_name"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="4dp"
            android:text="Department : Orthopedic"
            android:textSize="20dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.163" />
        <TableLayout
            android:id="@+id/tableLayout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.515"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.458">
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"

                >
                <TextView
                    android:id="@+id/textView6"
                    android:layout_width="200dp"
                    android:layout_height="80dp"
                    android:layout_margin="0.1sp"
                    android:background="@drawable/cell_shape"
                    android:text="Number"
                    android:textAlignment="center"
                    android:textColor="#000000"
                    android:textSize="40dp"
                    android:textStyle="bold" />
                <TextView
                    android:id="@+id/textView5"
                    android:layout_width="150dp"
                    android:layout_height="80dp"
                    android:layout_marginTop="0.1sp"
                    android:background="@drawable/cell_shape"
                    android:text="Room"
                    android:textAlignment="center"
                    android:textColor="#080808"
                    android:textSize="40dp"
                    android:textStyle="bold" />
            </TableRow>
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="-5dp">
                <TextView
                    android:id="@+id/number1"
                    android:layout_width="200dp"
                    android:layout_height="50dp"
                    android:layout_margin="0.1sp"
                    android:background="@drawable/cell_shape_body"
                    android:text="1001"
                    android:textAlignment="center"
                    android:textColor="#000000"
                    android:textSize="30dp"
                    android:textStyle="bold" />
                <TextView
                    android:id="@+id/room1"
                    android:layout_width="150dp"
                    android:layout_height="50dp"
                    android:layout_marginTop="0.1sp"
                    android:background="@drawable/cell_shape_body"
                    android:text="2"
                    android:textAlignment="center"
                    android:textColor="#080808"
                    android:textSize="30dp"
                    android:textStyle="bold" />

            </TableRow>
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="-5dp">
                <TextView
                    android:id="@+id/number2"
                    android:layout_width="200dp"
                    android:layout_height="50dp"
                    android:layout_margin="0.1sp"
                    android:background="@drawable/cell_shape_body"
                    android:text="1002"
                    android:textAlignment="center"
                    android:textColor="#000000"
                    android:textSize="30dp"
                    android:textStyle="bold" />
                <TextView
                    android:id="@+id/room2"
                    android:layout_width="150dp"
                    android:layout_height="50dp"
                    android:layout_marginTop="0.1sp"
                    android:background="@drawable/cell_shape_body"
                    android:text="2"
                    android:textAlignment="center"
                    android:textColor="#080808"
                    android:textSize="30dp"
                    android:textStyle="bold" />

            </TableRow>
            <TableRow
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="-5dp">
                <TextView
                    android:id="@+id/number3"
                    android:layout_width="200dp"
                    android:layout_height="50dp"
                    android:layout_margin="0.1sp"
                    android:background="@drawable/cell_shape_body"
                    android:text="1003"
                    android:textAlignment="center"
                    android:textColor="#000000"
                    android:textSize="30dp"
                    android:textStyle="bold" />
                <TextView
                    android:id="@+id/room3"
                    android:layout_width="150dp"
                    android:layout_height="50dp"
                    android:layout_marginTop="0.1sp"
                    android:background="@drawable/cell_shape_body"
                    android:text="2"
                    android:textAlignment="center"
                    android:textColor="#080808"
                    android:textSize="30dp"
                    android:textStyle="bold" />

            </TableRow>
        </TableLayout>
        <Button
            android:id="@+id/btn_booking"
            android:layout_width="350dp"
            android:layout_height="50dp"
            android:background="#d7b9b9b9"
            android:text="BOOKING"
            android:textColor="#ffffff"
            android:textSize="20dp"
            android:textStyle="bold"
            android:visibility="visible"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.965" />
        <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
            android:id="@+id/image_department"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_marginBottom="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.015"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.048"
            app:civ_border_color="#ffffff"
            app:srcCompat="@mipmap/ic_launcher" />
        <TextView
            android:id="@+id/company_name"
            android:layout_width="250dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginStart="8dp"
            android:layout_marginTop="8dp"
            android:text="Company Name: TNB"
            android:textSize="20dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.064" />
    </android.support.constraint.ConstraintLayout>

此行错误,空指针

Fragment currentFragment=getActivity().getFragmentManager().findFragmentByTag("CurrentStatusView");

日志猫错误

    04-12 20:52:13.112 3021-3021/com.example.cheng.freequeue E/AndroidRuntime: FATAL EXCEPTION: main
                java.lang.NullPointerException
                at com.example.cheng.freequeue.DisplayDepartmentStatus.CurrentStatusView.synchronizeNum(CurrentStatusView.java:104)
                at com.example.cheng.freequeue.DisplayDepartmentStatus.DisDepartmentParse.onPostExecute(DisDepartmentParse.java:64)
                at com.example.cheng.freequeue.DisplayDepartmentStatus.DisDepartmentParse.onPostExecute(DisDepartmentParse.java:18)
                at android.os.AsyncTask.finish(AsyncTask.java:631)
                at android.os.AsyncTask.access$600(AsyncTask.java:177)
                at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
                at android.os.Handler.dispatchMessage(Handler.java:99)
                at android.os.Looper.loop(Looper.java:137)
                at android.app.ActivityThread.main(ActivityThread.java:5166)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:525)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:561)
                at dalvik.system.NativeStart.main(Native Method)

我建议创建一个用于更新数据的接口。

public interface SynchronizeCallback {
  void synchronizeNum(String num1room1, String num2room2, String num3room3);
}

您的片段应实现此接口。

同时将文本设置为 syncNum(( 中的文本视图:

num_1.setText(num1);
num_2.setText(num1);
num_3.setText(num1);
room_1.setText(room1);
room_2.setText(room2);
room_3.setText(room3);

创建任务时将接口传递给任务:

new DisDepartmentSender(myView.getContext(), urlAddress, accountEmail, departmentName, this).execute();

onPostExecute您的AsyncTask电话

syncronizeCallback.updateValues(newNum1room1, newNum2room2, newNum3room3);

然后,您应该会看到新数据。

最新更新