[英]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.