【问题标题】:java.lang.IllegalStateException: (Activity has been destroyed) in fragmentsjava.lang.IllegalStateException:(活动已被销毁)在片段中
【发布时间】:2017-04-03 23:51:40
【问题描述】:

在我的应用程序中,我有 2 个片段:fragmentDiaryfragmentCal。我正在尝试从 fragmentCal 拨打 fragmentDiary 。为此,我在 MainActivity 中创建了一个函数 callFragmentDiary() 。因此,从fragmentCal 调用 MainActivity 中的这个函数。然后这个函数从 MainActivity 调用fragmentDiary。但是我在这个函数的下一行得到了java.lang.IllegalStateException

 ft.replace(R.id.container , fragDiary).commit();

以下是相关代码:

在 fragmentCal.java 中

( new MainActivity()).callFragmentDiary(date);

MainActivity

package com.example.nirvan.finaldiary;

import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

  FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
  fragmentDiary fragDiary = new fragmentDiary();
  fragmentCal fragCal = new fragmentCal();

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ft.add(R.id.container,fragCal).commit();
  }

  public void callFragmentDiary(int []date){
    Bundle bundle=new Bundle();
    bundle.putInt("day",date[0]);
    bundle.putInt("month",date[1]);

    fragDiary.setArguments(bundle);
    ft.replace(R.id.container , fragDiary).commit();
  }
}

【问题讨论】:

    标签: android android-fragments illegalstateexception


    【解决方案1】:

    你在演员表中实例化了一个(new MainActivity). callFragmentDiary,而它应该类似于((MainActivity)getActivity()).callFragmentdiary

    另外,在onCreate 方法中获取FragmentManager 可能是个好主意,因为在加载/实例化类时可能不会设置片段管理器。并且仅在您打算使用它时创建FragmentTransaction

    【讨论】:

    • 为什么会这样? (new MainActivity).callFragmentDiary 有什么问题?为什么我不能创建MainActivity 的对象并使用它来访问其中的函数?
    • 因为活动是由 Android 框架实例化的。你不应该自己实例化它们。您在新实例上调用方法 callFragmentDiary,而不是在其中运行代码的实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多