2017-03-14 69 views
0

如何從Adapter更新ActionBar標題?適配器更新標題操作欄

我嘗試這樣做:

((MainActivity) getActivity()).getSupportActionBar().setTitle(getString(R.string.home_item)); 

但這種方式只是片段內工作。所以我這樣做:

((MainActivity) view.getContext()).getSupportActionBar().setTitle(getString(R.string.home_item)); 

並得到拋出異常。我不知道該怎麼做。

所以有可能從適配器更新ActionBar標題?謝謝

+0

動作條的通行證實例和活動的適配器。 –

回答

0

傳遞適配器中的活動上下文。

Myadapter adapter = new Myadapter (this); 

在Myadapter類:

Context context; 
public Myadapter(Context c){ 
     this.context = c; 
} 

現在使用context設置標題,如:

((MainActivity) context.getSupportActionBar().setTitle(getString(R.string.home_item)); 
+0

嗨rafsanahmad007,當我通過上下文,在你的方式或其他方式我得到「clascastexception」。我不知道爲什麼!我無法從適配器更新工具欄標題。謝謝你的幫助! – agustincola

+0

'clascastexception'發佈完整的logcat錯誤? – rafsanahmad007

+0

致命異常:主要java.lang.ClassCastException:com.agustinherrerocola.motogpmanager.activity.PilotsMotoGPActivity不能轉換到com.agustinherrerocola.motogpmanager.activity.MainActivity 在com.agustinherrerocola.motogpmanager.adapter.PilotsAdapter – agustincola

0

也許類似的回調結構?有了這個,你不需要傳遞整個Context的實例,只需要回調。

class Adapter{ 
    private AdapterCallback callback; 
    public Adapter(AdapterCallback callback){ 
    this.callback = callback; 
    } 

    public interface AdapterCallback{ 
    void changeTitle(String s); 
    } 
} 

而且你的活動實現AdapterCallback,並把它傳遞給適配器像

class YourActivity extends Activity implements AdapterCallback{ 

    Adapter adapter = new Adapter(this); 

    public void changeTitle(String s){ 
     getSupportActionBar().setTitle(s); 
    }  
} 

這樣,您可以簡單地在你的適配器類調用

callback.changeTitle("New Title"); 
+0

嗨,穆拉特,我試圖做到這一點,但我已經得到了n「Nullpointerexception」。沒有工作。無論如何,謝謝你的幫助。 – agustincola