GVKun编程网logo

Android getActionBar vs getSupportActionBar?

13

关于AndroidgetActionBarvsgetSupportActionBar?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ActionBarDrawerToggle无法应用于A

关于Android getActionBar vs getSupportActionBar?的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ActionBarDrawerToggle无法应用于Android.support.v7.widget.Toolbar、actionbarsherlock getSupportActionBar() return null in android4.0,but in 2.3.3 is ok、Android ActionBar setActionView布局问题、Android ActionBar(ActionBarCompat)Spinner下拉列表?等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

Android getActionBar vs getSupportActionBar?

Android getActionBar vs getSupportActionBar?

这是我的代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){

    //android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    //actionBar.setTitle("Android");

    ActionBar actionBar = getActionBar();
    actionBar.setTitle("Droid");
}

在使用getSupportActionBar()时,我的应用程序与kitkat和其他新版本运行良好,但使用getActionBar导致错误.

这是错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.hide()' on a null object reference
            at com.github.domain.geoquiz.QuizActivity.onCreate(QuizActivity.java:57)
            at android.app.Activity.performCreate(Activity.java:5933)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
            at android.app.ActivityThread.performlaunchActivity(ActivityThread.java:2251)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372

为什么?来自android文档:

Caution: Be certain you import the ActionBar class (and related APIs)
from the appropriate package:

If supporting API levels lower than 11:
import android.support.v7.app.ActionBar

If supporting only API level
11 and higher: import android.app.ActionBar

现在为什么这个应用程序崩溃了?

解决方法

如果您正在使用AppCompat,无论您的应用程序运行的是哪个Android版本,您都必须调用getSupportActionBar().

您定位的是哪个Android版本?

我建议你使用新的Toolbar而不是ActionBar,因为它的使用方式更灵活.

ActionBarDrawerToggle无法应用于Android.support.v7.widget.Toolbar

ActionBarDrawerToggle无法应用于Android.support.v7.widget.Toolbar

我一直收到错误,说ActionBarDrawerToggle无法应用于v7.widget.Toolbar,因为我看了其他人如何解决类似的问题,他们现在都支持库文件,但错误不会因某种原因消失.

错误说ActionBarDrawerToggle中的ActionBarDrawerToggle()无法应用于android.support.v7.widget.Toolbar然后在实际参数R.id.drawable_ic_drawer(int)下

import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.support.v7.widget.Toolbar;
mDrawerToggle = new android.support.v7.app.ActionBarDrawerToggle(
                getActivity(),/* host Activity */
                mDrawerLayout,/* DrawerLayout object */
                R.drawable.ic_drawer,/* nav drawer image to replace 'Up' caret */
                R.string.navigation_drawer_open,/* "open drawer" description for accessibility */
                R.string.navigation_drawer_close  /* "close drawer" description for accessibility */
        ) {

据说造成错误的部分是R.drawer.ic_drawer.我该如何解决?

解决方法

ActionBarDrawerToggle构造函数如下.
android.support.v7.app.ActionBarDrawerToggle.ActionBarDrawerToggle(Activity activity,DrawerLayout drawerLayout,Toolbar toolbar,int openDrawerContentDescRes,int closeDrawerContentDescRes)

您正在传递R.drawable.ic_drawer drawable而不是工具栏,这就是您收到此错误的原因.

创建工具栏并将其添加为操作栏,并将此工具栏传递给此构造函数.

actionbarsherlock getSupportActionBar() return null in android4.0,but in 2.3.3 is ok

actionbarsherlock getSupportActionBar() return null in android4.0,but in 2.3.3 is ok

转载地址:http://stackoverflow.com/questions/11944855/actionbarsherlock-getsupportactionbar-return-null-in-android4-0-but-in-2-3-3-i


不想看那么多 E 文的:我直接说关键部分

找到





改完就可以了!

Android ActionBar setActionView布局问题

Android ActionBar setActionView布局问题

我一直在尝试使用ICS中ActionBar的setActionView

看起来它应该是直截了当但不知何故我没有得到我希望的布局对齐.如下图所示,“目标”图标在其布局中正确居中.但是当我setActionBar(progress)时,无论我尝试什么,进度视图总是与右边对齐.

在单击菜单项之前和之后,有两种状态.如您所见,进度视图始终与右侧对齐.我已经尝试将我的进度布局xml中的重力选项从左到右更改为中心,无论我做什么改变它似乎都没有改变任何东西.

我没有找到关于这个问题的任何信息,所以我想我一定做错了.

有人有线索吗?
谢谢您的帮助!

这是我的操作栏菜单布局’action_bar_menu.xml’

这是我的进度条布局’inderterminate_progress.xml’

ravity="center">

    ravity="center"
                 android:indeterminate="true"/>

最后这是我的testx活动

public class HelloAndroidActivity extends Activity {

    /**
     * Called when the activity is first created.
     * @param savedInstanceState If the activity is being re-initialized after
     * prevIoUsly being shut down then this Bundle contains the data it most
     * recently supplied in onSaveInstanceState(Bundle). noptionsItemSelected(MenuItem item) {
        super.onoptionsItemSelected(item);


        if (R.id.locate == item.getItemId()) {

            final MenuItem menuItem = item.setActionView(R.layout.inderterminate_progress);

            new Thread(new Runnable() {
                @Override
                public void run() {
                    SystemClock.sleep(3000);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            menuItem.setActionView(null);
                        }
                    });
                }
            }).start();
        }

        return true;
    }
}
最佳答案
似乎明确定义样式并在布局的根中添加4dip填充以进行膨胀,如下所示解决了这个问题

ravity="center"
    android:paddingLeft="4dip"
    android:paddingRight="4dip"/>

这似乎在android stylesheet here中使用

Android ActionBar(ActionBarCompat)Spinner下拉列表?

Android ActionBar(ActionBarCompat)Spinner下拉列表?

我目前正在为ActionBar(ActionBarCompat)工作,我需要一些关于actionbar的澄清.

我正在使用像这样的微调器布局,

<Spinner 
        android:id="@+id/SpinnerList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

我的代码,

public class MainActivity extends ActionBaractivity implements  OnItemSelectedListener{
    private boolean mAlternateTitle = false;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ActionBar bar = getActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

        Spinner spinner = (Spinner) findViewById(R.id.SpinnerList);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromresource(this,R.array.locations,android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setonItemSelectedListener(this);
}
}

它在我的android galaxy ace中显示正常的微调器.我需要输出如下所示,
是那个位置android 2.3.请给出建议.

谢谢.

解决方法

试试这个代码.
在menu / main.xml中:
<item
    android:id="@+id/menu_spinner1"
    android:showAsAction="always"
    android:orderInCategory="1"
    android:actionView>

在活动中:

private MenuItem mSpinnerItem1 = null;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.


    MenuInflater mi=getMenuInflater();
    mi.inflate(R.menu.main,menu);
    mSpinnerItem1 = menu.findItem( R.id.menu_spinner1);
    View view1 = mSpinnerItem1.getActionView();
    if (view1 instanceof Spinner)
    {
        final Spinner spinner = (Spinner) view1;
        spinner.setAdapter(ad1);


        spinner.setonItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0,View arg1,int arg2,long arg3) {
                // Todo Auto-generated method stub

            }

            @Override
            public void onnothingSelected(AdapterView<?> arg0) {
                // Todo Auto-generated method stub

            }
        });

    }

    return true;
}

关于Android getActionBar vs getSupportActionBar?的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于ActionBarDrawerToggle无法应用于Android.support.v7.widget.Toolbar、actionbarsherlock getSupportActionBar() return null in android4.0,but in 2.3.3 is ok、Android ActionBar setActionView布局问题、Android ActionBar(ActionBarCompat)Spinner下拉列表?的相关信息,请在本站寻找。

本文标签: