GVKun编程网logo

getSupportActionBar()在Android应用中返回Null(android gettext返回类型)

11

对于getSupportActionBar()在Android应用中返回Null感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解androidgettext返回类型,并且为您提供关于Acti

对于getSupportActionBar()在Android应用中返回Null感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解android gettext返回类型,并且为您提供关于ActionBarDrawerToggle无法应用于Android.support.v7.widget.Toolbar、actionbarsherlock getSupportActionBar() return null in android4.0,but in 2.3.3 is ok、Android getActionBar vs getSupportActionBar?、android getSupportActionBar()在片段中返回null的宝贵知识。

本文目录一览:

getSupportActionBar()在Android应用中返回Null(android gettext返回类型)

getSupportActionBar()在Android应用中返回Null(android gettext返回类型)

我正在尝试使用Android Studio中的标签进行操作,但getSupportActionBar()始终返回null.

我只想要一个带有3个选项卡的简单操作栏,我可以在其中单击,但是操作栏或选项卡均未显示.

这是我的代码:

import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Window;

public class MainActivity extends AppCompatActivity implements ActionBar.TabListener
{

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    requestwindowFeature(Window.FEATURE_ACTION_BAR);
    setContentView(R.layout.activity_main);

    ActionBar ab = getSupportActionBar();
    if (ab == null)
    {
        Log.d("test", "Failed");
        return;
    }
    ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    ab.addTab(ab.newTab().setText("Tab 1").setTabListener(this));
    ab.addTab(ab.newTab().setText("Tab 2").setTabListener(this));
    ab.addTab(ab.newTab().setText("Tab 3").setTabListener(this));
}

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction)
{
    int nTabSelected = tab.getPosition();
    switch (nTabSelected)
    {
        case 0:
            break;
        case 1:
            break;
        case 2:
            break;
    }
}

@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction)
{
}

@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction)
{
}

}

我已经尝试了很多在互联网上看到的东西,例如getActionBar()或完全不同的代码,但似乎没有任何效果,而且我始终具有返回null的函数.

我正在使用API​​ 19.

解决方法:

我不得不改变

/Theme.AppCompat.DayNight.NoActionBar

通过

/Theme.AppCompat.DayNight.DarkActionBar

在清单中.

谢谢迈克尔的帮助.

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 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,因为它的使用方式更灵活.

android getSupportActionBar()在片段中返回null

android getSupportActionBar()在片段中返回null

UPDATE

我没有提到将ToolBar与ActionBaractivity一起使用的任何内容.这就是我总是得到空指针异常的原因.对于那些面临同样问题please refere this answer的人

我有这个片段代码来更改片段时更改支持操作栏的外观.

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        setHasOptionsMenu(true);
        mActionBar = ((ActionBaractivity)getActivity()).getSupportActionBar();
        SpannableString s = new SpannableString("Dashboard");
        s.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.app_blue_text)), 0, s.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
        s.setSpan(new TypefaceSpan(getActivity(), "Optima-Regular.ttf"), 0, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

        if( null!= mActionBar){
            mActionBar.setElevation(0);
            mActionBar.setTitle(s);
        }
    }

我已经提到了有关如何解决此错误的先前/类似问题.这些解决方案建议在onActivityCreated()方法中更改操作栏外观.我也试过onAttach().似乎没有工作.我使用了支持操作栏来保持向后兼容性.活动也相应地转换为ActionBaractivity.

完整的代码非常冗长,所以我跳过了它.如果需要,我可以发布完整的代码并更新问题以及更多细节.

错误日志

Caused by: java.lang.NullPointerException
            at com.example.testapp.fragments.NavigationDrawerFragment.onActivityCreated(NavigationDrawerFragment.java:215) 

第215行是:mActionBar.setElevation(0);

解决方法:

我错过了在这个问题中提及的更多信息.这就是其他优秀的SO用户无法正确回答的原因.所以我在这里自己回答.

我用ToolBar代替了常规的ActionBar.使用ToolBar时,必须将其设置为ActionBar.所以做 –

toolbar = (Toolbar) getActivity().findViewById(toolbarId);
((ActionBaractivity)getActivity()).setSupportActionBar(toolbar);

之后我可以轻松改变标题和外观 –

((ActionBaractivity)getActivity()).getSupportActionBar().setTitle(s);

只需记住在实际使用片段中的操作栏之前将工具栏设置为操作栏.

今天关于getSupportActionBar()在Android应用中返回Nullandroid gettext返回类型的介绍到此结束,谢谢您的阅读,有关ActionBarDrawerToggle无法应用于Android.support.v7.widget.Toolbar、actionbarsherlock getSupportActionBar() return null in android4.0,but in 2.3.3 is ok、Android getActionBar vs getSupportActionBar?、android getSupportActionBar()在片段中返回null等更多相关知识的信息可以在本站进行查询。

本文标签: