這絕對不是設置標題推薦的方式,但是,如果您刪除分配abs = "text";
它應該工作...
public class MyActivity extends SlidingFragmentActivity {
public static String abs;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setTitle(abs);
}
}
...和請撥打MyActivity.abs = "new value";
一些之前活動創建的第一次。
無論如何,我會建議通過標題作爲一個額外的進入活動...
Intent intent = new Intent(context, MyActivity.class);
intent.putExtra("title", "Another Headline");
context.startActivity(intent);
...和評估一個從意圖:
public class MyActivity extends SlidingFragmentActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle extras = getIntent().getExtras();
String title = "Default Headline";
if (extras != null && extras.containsKey("title")) {
title = intent.getStringExtra("title");
}
getSupportActionBar().setTitle(title);
}
}
附:創建後設置標題:
如果你可以直接引用的活動,比如因爲你在一個片段,您可以添加一個方法,像...
public class MyActivity extends SlidingFragmentActivity {
public void setTitle(String title) {
this.getSupportActionBar().setTitle(title);
}
....
}
...並相應地把它:
getActivity().setTitle("Another Headline");
最複雜的方式來傳遞任何類型的參數,以現有的活動,讓他們來處理它們以任何方式將使用一個BroadcastReceiver:
public abstract class MyActivity extends SlidingFragmentActivity {
public static final String SET_TITLE_ACTION = "com.myapp.SET_TITLE_ACTION";
public static final IntentFilter INTENT_FILTER = createIntentFilter();
private SetTitleReceiver setTitleReceiver = new SetTitleReceiver();
private static IntentFilter createIntentFilter() {
IntentFilter filter = new IntentFilter();
filter.addAction(SET_TITLE_ACTION);
return filter;
}
protected void registerSetTitleReceiver() {
registerReceiver(setTitleReceiver, INTENT_FILTER);
}
protected void unRegisterSetTitleReceiver() {
unregisterReceiver(setTitleReceiver);
}
public class SetTitleReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SET_TITLE_ACTION)) {
Bundle extras = intent.getExtras();
if (extras != null && extras.containsKey("title")) {
title = intent.getStringExtra("title");
this.getSupportActionBar().setTitle(title);
}
}
}
}
}
任何Activity
類應該能夠收到標題變化在onResume()
註冊BroadcasdtReceiver
和onPause()
註銷它。這樣,您就可以通過從任何地方發送廣播事件設置這些活動實例的標題:
Intent intent = new Intent(MyActivity.SET_TITLE_ACTION);
intent.putExtra("title", "Another Headline");
context.sendBroadcast(intent);
希望這有助於...乾杯!
感謝您的幫助。第一次創建活動後,我必須設置標題。我需要動態地使用settext:我的意思是隻有settext值必須改變,頁面不會改變/刷新。當我使用intent時,主頁將會改變/刷新我想,不是嗎? – metemet06
請參閱上文:如果您可以獲得有關所創建活動的參考信息,則最簡單的解決方案將適用。您可以在活動的onCreate()中分配這樣的引用(可以將其提供給適當的觀察者,或者簡單地使用靜態列表)。使用'BroadcastReceiver'是最靈活的方式,至少從某個角度來看 – Trinimon
感謝您的幫助 – metemet06