我被建议从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;
}
}
如果我使用ACtionBarActivity而不是Activity,当我尝试运行它时,手机上会出现以下错误:
对于TaskActivity类型
,未定义getSupportActionBar()方法
答案 0 :(得分:74)
您的课程需要从ActionBarActivity
延伸,而不是普通的Activity
,以便使用getSupport*()
方法。
更新 [2015/04/23]:使用the release of Android Support Library 22.1,您现在应该展开AppCompatActivity.
此外,您不再 进行扩展ActionBarActivity
或AppCompatActivity
,因为您现在可以在任何活动中加入AppCompatDelegate
个实例。
答案 1 :(得分:5)
这是您可以使用的另一种解决方案。它正在我的应用程序中工作。
@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使用的那一行的导入。
答案 2 :(得分:3)
如果您已经从ActionBarActivity扩展,并且您正试图从片段中获取操作栏:
ActionBar mActionBar = (ActionBarActivity)getActivity()).getSupportActionBar();
答案 3 :(得分:2)
以下是我的问题的答案。 我再次提出一些评论。 How to add support libraries?
答案 4 :(得分:2)
如果您从AppCompatActivity扩展并尝试从Fragment获取ActionBar,则可以执行以下操作:
ActionBar mActionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
答案 5 :(得分:1)
您必须将extends活动更改为扩展 AppCompactActivity然后尝试set和getSupportActionBar()
答案 6 :(得分:0)
可以在设置内容视图之前设置ActionBar吗?此顺序会更好:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar =getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}