【问题标题】:Method call mActionBar=getActionBar() gives error [closed]方法调用 mActionBar=getActionBar() 给出错误 [关闭]
【发布时间】:2014-02-22 15:50:09
【问题描述】:

我正在使用支持库 android.support.v7.app.actionbar,因为我想要 api 级别 8 及以上的操作栏 但是下面的句子给了我错误,比如将 mActionBar 更改为 ActionBar

mActionBar=getActionBar();

我想在其中使用ActionBar标签的FragmentActivity如下

import com.example.bottomtabadapter.TabPageAdapter;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBar.Tab;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.view.Menu;

public class TabFragmentActivity extends FragmentActivity implements ActionBar.TabListener{

private ViewPager mViewPager;
private ActionBar mActionBar;
private TabPageAdapter mAdapter;

private String[] tabs={"Chat","Groups","Contacts"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tab_fragment);

    mViewPager=(ViewPager)findViewById(R.id.pager);
    mActionBar=getActionBar();  // here is the error
    mAdapter=new TabPageAdapter(getSupportFragmentManager());

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.tab, menu);
    return true;
}

@Override
public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
    // TODO Auto-generated method stub

}

@Override
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
    // TODO Auto-generated method stub

}

@Override
public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
    // TODO Auto-generated method stub

}

}

【问题讨论】:

  • 你扩展了activity还是tabactivity
  • 我认为这不是运行时错误,而是编译时错误...来自支持库的 ActionBar != original ActionBar
  • 如果您无法回答该问题,请不要为该问题降级
  • @Selvin 我认为这个问题不应该被标记为离题,因为最终它得到了解决。我确实同意,使用发布的 logcat 堆栈跟踪会更容易找到根本原因。

标签: android android-actionbar android-support-library


【解决方案1】:

如果您想为 API 7 及更高版本的旧设备提供操作栏,您应该扩展 ActionBarActiviy

【讨论】:

  • 我的类扩展了 FragmentActivity 并实现了 ActionBar.TabListener
  • 你可以只扩展 ActionBarActivity 而不是 FragmentActivity。应该不是问题,因为 ActionBarActivity 扩展了 FragmentActivity,请参阅文档
  • 我只是扩展了 ActionBarActivity,现在它可以工作了,谢谢...
  • 太棒了!原来这个问题其实有答案:-)
  • 您不只是扩展 ActionBarActivty ,而是将 getActionBar 更改为 getSupportActionBar。
【解决方案2】:

试试这个姜饼代码。别忘了添加支持的库

public class NavigationActivity extends ActionBarActivity {


    ActionBarActivity activity;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.slide_screen);


         activity=(ActionBarActivity) Context.getApplicationContext();

        ActionBar actionBar = getSupportActionBar();

}

【讨论】:

  • 我试试 ActionBar actionBar = getSupportActionBar();但它也给了我错误
  • 你是否添加了支持的库。在构建路径中检查它
  • @HemangNirmal 把它改成这个 - android.support.v7.app.ActionBar actionaBar = getSupportActionBar();
猜你喜欢
  • 1970-01-01
  • 2012-04-03
  • 2016-02-02
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 2021-02-21
相关资源
最近更新 更多