タイトルを設定するのは絶対に推奨される方法ではありませんが、割り当てを削除するとうまくいくはず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);
}
}
作成後のps設定タイトル:
たとえば、フラグメント内にいるためにアクティビティを直接参照できる場合は、次のようなメソッドを追加できます...
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
の変更を受け取ることができるクラスは、 に登録し、BroadcasdtReceiver
にonResume()
登録解除する必要がありonPause()
ます。このようにして、どこからでもブロードキャスト イベントを送信して、これらのアクティビティ インスタンスのタイトルを設定できます。
Intent intent = new Intent(MyActivity.SET_TITLE_ACTION);
intent.putExtra("title", "Another Headline");
context.sendBroadcast(intent);
これが役に立てば幸いです...乾杯!