Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot use Action bar and Fragment in Android 2.3

I want to use Action bar and Fragment in Android 2.3, but there is an error

Type mismatch: cannot convert from android.app.ActionBar to android.support.v7.app.ActionBar

in this row

final ActionBar bar = getActionBar();

I have already import android.support.v4 and v7.

package com.hmkcode.android;

import android.support.v7.app.ActionBar;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends FragmentActivity {
private ViewPager pager;
private TabsAdapter mTabsAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    pager = new ViewPager(this);
    pager.setId(R.id.pager);
    setContentView(pager);

    final ActionBar bar = getActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    mTabsAdapter = new TabsAdapter(this, pager);
    mTabsAdapter.addTab(bar.newTab().setText("List Fragment 1"), List_View.class, null);
    mTabsAdapter.addTab(bar.newTab().setText("List Fragment 2"), List_View.class, null);
    mTabsAdapter.addTab(bar.newTab().setText("List Fragment 3"), List_View.class, null);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    //return true;
    MenuItem item1 = menu.add(0, 1, 1, "Change role");
    item1.setShortcut('1', '1');

    MenuItem item2 = menu.add(0, 2, 2, "User Information");
    item2.setShortcut('2', '2');

    return super.onCreateOptionsMenu(menu);
}

}
like image 358
We Rub Chan Avatar asked Dec 03 '22 20:12

We Rub Chan


1 Answers

Make sure you have referenced AppCompat

http://developer.android.com/tools/support-library/setup.html

CHange

public class MainActivity extends FragmentActivity {
    ...
}

to

public class MainActivity extends ActionBarActivity { 
    ...
}

and change

final ActionBar bar = getActionBar();

to

final ActionBar bar = getSupportActionBar();  

Reference

http://developer.android.com/guide/topics/ui/actionbar.html

Also why do you need

setContentView(R.layout.activity_main);

when you have

setContentView(pager);
like image 149
Raghunandan Avatar answered Dec 10 '22 12:12

Raghunandan