1. 程式人生 > >執行Fragment的getActivity()方法返回null

執行Fragment的getActivity()方法返回null

在android開卡中Activity+ViewPager+Fragment幾乎是每一個專案中都會使用到的結構,在Fragment中如果需要使用到Context物件一般就是getActivity()。但是如果Activity被銷燬的話,getActivity()便會返回null。

解決方案有以下幾種:
1.不儲存fragment的狀態:在Activity中重寫onSaveInstanceState方法,將super.onSaveInstanceState(outState);註釋掉,讓其不再儲存Fragment的狀態,達到fragment隨MyActivity一起銷燬的目的。

2.重建時清除已經儲存的fragment的狀態:在恢復Fragment之前把Bundle裡面的fragment狀態資料給清除。方法如下:

if(savedInstanceState!= null)
{
      String FRAGMENTS_TAG = "Android:support:fragments";
      savedInstanceState.remove(FRAGMENTS_TAG);
}

3.使用全域性Application得到的Context

(1)在Manifest中註冊Application

<application
    android:name=".MyApplication"
    android:icon="@drawable/ic_launcher"
    android:label="@string
/app_name"
>

(2)建立Application,以單利的形式提供對外引用

public class MyApplication extends Application {
    private static MyApplication instance;

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }

    public static MyApplication getInstance(){
        // 這裡不用判斷instance是否為空
return instance; } }

(3)在程式中使用

Context context = MyApplication.getInstance();
Toast.makeText(context, "Your Toast Message", Toast.SHORT_TOAST).show();

相關推薦

執行Fragment的getActivity()方法返回null

在android開卡中Activity+ViewPager+Fragment幾乎是每一個專案中都會使用到的結構,在Fragment中如果需要使用到Context物件一般就是getActivity()。但是如果Activity被銷燬的話,getActivity()

Android中GridView、ListView 的 getChildAt() 方法返回null 問題解釋

開發的Android app用到了GridView或者ListView,通常使用getChildAt(int position)方法獲取當前點選或者選中的View(即position對應的View)。   當ListView、GridView沒有滑動的時候,可以正常地獲

以太坊挖礦失敗,執行miner.start返回null

問題場景 最近技術群中的朋友經常問到這樣的問題,環境搭建已經搭建好,geth節點也成功啟動,可為什麼當執行miner.start()方法時卻沒有挖礦,返回null。 其實,不僅僅這些朋友,本人在啟動最新節點進行挖礦的時候也遇到類似的問題。今天就帶大家分析一下引起這個問題可能的幾個原因。

BitmapFactory.decodeStream方法返回null的錯誤分析

這個問題其實早就遇到了,由於停了幾天電無法工作,今天就把這問題記錄下分享下。利用BitmapFactory載入網路中的圖片時,使用decodeStream方法會返回null的錯誤。主要是由於下面幾個原因導致的: 流已經關閉 decodeStream呼叫了兩次

Android中GridView、ListView 的 getChildAt() 方法返回null 問題

  開發的Android app用到了GridView或者ListView,通常使用getChildAt(int position)方法獲取當前點選或者選中的View(即position對應的View)。   當ListView、GridView沒有滑動的時候,可以正常地獲

Java呼叫Document.getElementById方法返回null的解決辦法

 Java中操作xml的函式Document.getElementById(String id),是通過指定的id來獲取對應的element。但是僅僅定義了正確的schema和對應的xml檔案是不夠的,返回值仍然是null。因為我們不僅要告訴xml檔案我們所用的schem

關於為何TreeMap中用列印語句列印get方法返回null的原因(解決辦法有待完善)

以上會get到null值,究其原因,可以從get方法原始碼中找到答案。TreeMap集合中實現Map集合的get程式碼如下:       public V get(Object key) {       &

findFragmentById() 方法總是返回null (kotlin)

fragmentManager.findFragmentById() 屬於包android.app.Fragment supportFragmentManager.findFragmentById()

小程式使用selectComponent獲取自定義元件時,返回null(分析和解決方法

一、原因:        元件所在的佈局層級不同,該元件被建立的時間會有所不同,意味著ready(元件生命週期函式,元件佈局完成後執行)被呼叫的時間有所不同。由於元件建立完成的時間晚於頁面建立完成,即元件生命週期函式的ready被執行的時間晚於頁面生命週期

Mybatis查詢,查詢一個欄位的時候,沒有值,並且返回null,報空指標的解決方法

select IFNULL (MAX(custid), 0) AS custId from user_work_enroll_cust where phone=#{phone}MYsql這裡我們使用IFNULL函式處理即可其他資料在SQLSERVER中我們可以這樣寫:sele

安卓BitmapFactory.decodeStream()返回null的問題解決方法

今天遇到了一個問題,最終解決,記錄下解決方案: 問題:從網路獲取圖片,資料為InputStream流物件,然後呼叫BitmapFactory的decodeStream()方法解碼獲取圖片,返回null。 --------------------------------

JavaScript中執行function方法,並返回執行結果

以下程式碼實現JavaScript中執行MessageDialog方法成功後,執行回撥方法MessageDialogCallBack <!DOCTYPE html> <html> <head> <meta charset=

JDBC rs.getInt() 方法null返回0,解決方案。

JDBC ResultSet 的getInt, getLong, getDouble, getFloat等方法,不論資料庫中是否儲存為null,都返回0,或者0.0。 那如何才能返回null呢? 我個人是加上判斷,程式碼如下: ResultSet rs = statem

dom4j使用XPath解析XML返回null的解決方法

使用XPath解析XML的時候,在基本程式碼沒有寫錯的情況下,使用selectSingleNode()方法獲取xml的內容時返回null值,很有可能是因為xml設定了名稱空間。 1)在沒有名稱空間的情況下,book.xml的檔案(檔案位於src/cn/edu/gdut/we

Mysql中的資料用 json_decode 解析返回null的一則處理方法

剛剛遇到一個php json_decode解析的問題,記錄一下解決方法: 一個調查問卷系統,從資料庫中取出多條記錄,其中以下一條資料記錄,在用php json_decode解析時,結果返回NUll {"question_1359":"韓亮","question_1360":

Centos 執行shell命令返回127錯誤

建數據庫 mysq data 存在 思路 功能 自動創建 運行 用戶 shell腳本功能:連接mysql,自動創建數據庫,腳本如下 mysql -h$MYSQL_IP -u$MYSQL_USER -p$MYSQL_PASSWORD --default-character-s

springmvc 處理器方法返回的是modelandview 重定向到頁面

ima src log images 1-1 分享 .cn png mage springmvc 處理器方法返回的是modelandview 重定向到頁面

win10 IoT開發 Serial?Device 返回 null

box .com ica reat flow ron serial omid async 樹莓派3,win10 Iot,串口開發,抄例子,串口獲取返回老是null,例子卻可以,代碼一樣,上網查詢結果如下: https://stackoverflow.com/questio

springmvc Controller方法返回

response ping resp log mod for iter 頁面 轉發 1.1返回ModelAndView 不建議使用 1.2返回String 建議使用 @RequestMapping("updateItem") public String updat

java方法返回值的變量類型困惑

tail 方法 .com color conf 類型 log content font 一、java program progress of excuting:show in next picture How about the java virt