从一个片段移到另一个片段

时间:2019-09-26 14:51:25

标签: java android fragment

当我从一个片段切换到另一个片段时,应用程序崩溃。我不知道该怎么解决。我不知道该怎么办,因为我是android的新手。我在等你的帮助

调试控制台:

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.a5starcompany.mybank1/com.a5starcompany.mybank1.MainActivity}: java.lang.NullPointerException: You cannot start a load on a not yet attached View or a Fragment where getActivity() returns null (which usually occurs when getActivity() is called before the Fragment is attached or after the Fragment is destroyed).
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2724)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527)
        at android.os.Handler.dispatchMessage(Handler.java:110)
        at android.os.Looper.loop(Looper.java:203)
        at android.app.ActivityThread.main(ActivityThread.java:6251)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1073)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
     Caused by: java.lang.NullPointerException: You cannot start a load on a not yet attached View or a Fragment where getActivity() returns null (which usually occurs when getActivity() is called before the Fragment is attached or after the Fragment is destroyed).
        at com.bumptech.glide.util.Preconditions.checkNotNull(Preconditions.java:29)
        at com.bumptech.glide.Glide.getRetriever(Glide.java:709)
        at com.bumptech.glide.Glide.with(Glide.java:741)
        at com.a5starcompany.mybank1.Adapter.LoanAdapter.<init>(LoanAdapter.java:28)
        at com.a5starcompany.mybank1.MainActivity.onCreate(MainActivity.java:90)
        at android.app.Activity.performCreate(Activity.java:6691)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2677)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2789) 
        at android.app.ActivityThread.-wrap12(ActivityThread.java) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1527) 
        at android.os.Handler.dispatchMessage(Handler.java:110) 
        at android.os.Looper.loop(Looper.java:203) 
        at android.app.ActivityThread.main(ActivityThread.java:6251) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1073) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934) 
I/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod(`enter code here`) returned Gms: com.google.firebase.auth.api.internal.zzao@638cec8
I/BiChannelGoogleApi: [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzao@638cec8
I/art: Enter while loop.

java类是这个

        if (mActivity == null) {
            return;
        }
        final LoanModel loanModel = (LoanModel) this.list.get(i);
        myClass.loanName.setText(loanModel.getLoanName());
        myClass.loanPercentage.setText(loanModel.getPercentage());
        myClass.loanStarting.setText(String.valueOf(loanModel.getLoanStaring()));
        myClass.emiStarting.setText(String.valueOf(loanModel.getEmiStaring()));
        myClass.loanForm.setText(loanModel.getLoanForm());
        this.glide.load(loanModel.getImage()).into(myClass.loanImage);
}
``

1 个答案:

答案 0 :(得分:0)

谢谢zovakk的答复,但我不太理解您在说什么,这是我对该活动的完整代码

    public Activity mActivity;

    Context context;
    RequestManager glide = Glide.with(this.context);
    public ArrayList<LoanModel> list;

    public class MyClass extends ViewHolder {
        LinearLayout cardview;
        TextView emiStarting;
        TextView loanForm;
        ImageView loanImage;
        TextView loanName;
        TextView loanPercentage;
        TextView loanStarting;


        public MyClass(View view) {
            super(view);
            this.cardview = (LinearLayout) view.findViewById(R.id.cardview);
            this.loanImage = (ImageView) view.findViewById(R.id.imge_loan);
            this.loanName = (TextView) view.findViewById(R.id.loan_name);
            this.loanPercentage = (TextView) view.findViewById(R.id.loan_perc);
            this.loanStarting = (TextView) view.findViewById(R.id.loan_loanStarting);
            this.emiStarting = (TextView) view.findViewById(R.id.emi_Staring);
            this.loanForm = (TextView) view.findViewById(R.id.loan_form_name);

        }
    }


    public LoanAdapter(MainActivity mainActivity, ArrayList<LoanModel> arrayList) {
        this.context = mainActivity;
        this.list = arrayList;

    }

    public MyClass onCreateViewHolder(ViewGroup viewGroup, int i) {
        return new MyClass(LayoutInflater.from(this.context).inflate(R.layout.loan_layout, null));
    }

    public void onBindViewHolder(MyClass myClass, int i) {
        if (mActivity == null) {
            return;
        }
        final LoanModel loanModel = (LoanModel) this.list.get(i);
        myClass.loanName.setText(loanModel.getLoanName());
        myClass.loanPercentage.setText(loanModel.getPercentage());
        myClass.loanStarting.setText(String.valueOf(loanModel.getLoanStaring()));
        myClass.emiStarting.setText(String.valueOf(loanModel.getEmiStaring()));
        myClass.loanForm.setText(loanModel.getLoanForm());
        this.glide.load(loanModel.getImage()).into(myClass.loanImage);
        myClass.cardview.setOnClickListener(new OnClickListener() {
            public void onClick(View view) {
                Intent intent = new Intent(LoanAdapter.this.context, HomeLoanActiviy.class);
                intent.putExtra("LoanName", loanModel.getLoanName());
                intent.putExtra("ImageName", loanModel.getImage());
                intent.putExtra("Percentage", loanModel.getPercentage());
                intent.putExtra("LoanStarting", loanModel.getLoanStaring());
                intent.putExtra("EMIStarting", loanModel.getEmiStaring());
                intent.putExtra("LoanForm", loanModel.getLoanForm());
                LoanAdapter.this.context.startActivity(intent);
            }
        });
    }