簡體   English   中英

Android-單擊ListView中的元素時更改FAB圖標

[英]Android - Change FAB icon when an element into ListView is clicked

我在包含一些歌曲的Fragment中有一個ListView 當我單擊一首歌曲時,我想更改FAB內的圖標(位於Activity ),但我不知道該怎么做。 我已經嘗試過使用以下代碼:

分段:

mainActivity = new MainActivity();  //THIS IS INSIDE onCreate METHOD

mListViewSongs.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                mainActivity.fab.setImageResource(R.drawable.vector_pause);
         }
    }

我在我的Activity中將我的FAB聲明為公開,但仍然出現NullPointerException,如何解決此問題?

只需更換

mainActivity.fab.setImageResource(R.drawable.vector_pause);

通過

fab.setImageResource(R.drawable.vector_pause);

我假設fab被聲明為

FloatingActionButton fab;

並且您正在分配它像

fab = (FloatingActionButton) findViewById(R.id.your_fab_id_from_xml);

onCreate()調用setContentView()之后。

請記住,您永遠不要自己創建活動實例。 這是框架的角色,而不是您的角色。

假設晶圓廠在您的活動之內,您需要一種在片段和活動之間進行通信的方法。 我建議遵循本指南和本指南

本質上,您想定義一個接口ActivityController ,其中包含要在活動內部運行的所有函數。 這是一個樣機示例:

ActivityController.java您將創建的新接口

public interface ActivityController {
    void setFabImageResource(int resourceId);
}

MainActivity.java根據需要修改您的活動。

public class MainActivity implements ActivityController {
    //The rest of your code

    public void setFabImageResource(int resourceId) {
        fab.setImageResource(resourceId);
    }
}

YourFragment.java像這樣修改片段:

mListViewSongs.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            ((ActivityController)getActivity()).setFabImageResource(R.drawable.vector_pause);
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM