ActionBarActivityからActivityクラスを拡張することをお勧めしました
前のコードは次のとおりです。
import Android.support.v7.app.ActionBar;
import Android.support.v7.app.ActionBarActivity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
新しいアプリケーションを作成し、アドバイスに従いました。
import Android.os.Bundle;
import Android.support.v7.app.ActionBar;
import Android.support.v7.app.ActionBarActivity;
public class MainActivity extends ActionBarActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActionBar actionBar =getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Activityの代わりにACtionBarActivityを使用すると、実行しようとすると、電話で次のエラーが表示されます。
メソッドgetSupportActionBar()はTaskActivityタイプでは未定義です
これが私の質問の答えです。私はいくつかの発言でそれをもう一度尋ねました。 サポートライブラリを追加する方法
クラスは、getSupport*()
メソッドを使用するために、プレーンなActionBarActivity
ではなく、 Activity
から拡張する必要があります。
Update[2015/04/23]:Android Support Libraryのリリースで 22.1 、AppCompatActivity.
また、アクティビティに ActionBarActivity
インスタンスを組み込むことができるため、AppCompatActivity
またはAppCompatDelegate
を拡張するhaveがなくなりました。
使用できる別のソリューションを次に示します。私のアプリで動作しています。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Android.support.v7.app.ActionBar actionBar =getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.activity_main)
その後、ActionBarが使用する1行のインポートを削除できます。
既にActionBarActivityから拡張していて、フラグメントからアクションバーを取得しようとしている場合:
ActionBar mActionBar = (ActionBarActivity)getActivity()).getSupportActionBar();
AppCompatActivityから拡張し、FragmentからActionBarを取得しようとしている場合、これを行うことができます。
ActionBar mActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
Extends ActivityをAppCompactActivityを拡張するように変更してから、setおよびgetSupportActionBar()を試行する必要があります
Contient Viewを設定する前にActionBarを設定できますか?この順序はより良いでしょう:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar =getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}