在我的應用程序中,我有2個片段:fragmentDiary
和fragmentCal
。我想從fragmentCal
撥打fragmentDiary
。爲此,我在MainActivity
中爲此創建了一個函數callFragmentDiary()
。因此,從fragmentCal
開始,調用MainActivity中的此函數。然後這個函數從MainActivity調用fragmentDiary
。不過,我在這個函數的下一行獲得java.lang.IllegalStateException
。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();
}
}
這是爲啥工作? (新的MainActivity).callFragmentDiary'出了什麼問題?爲什麼我不能創建一個'MainActivity'的對象並使用它來訪問它的功能? – heathcliff
因爲活動由Android Framework實例化。你不應該自己實例化它們。您正在新實例上調用方法'callFragmentDiary',而不是正在運行代碼的實例。 –