对于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返回类型)
- 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返回类型)
我正在尝试使用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中的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.我该如何解决?
解决方法
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
转载地址:http://stackoverflow.com/questions/11944855/actionbarsherlock-getsupportactionbar-return-null-in-android4-0-but-in-2-3-3-i
不想看那么多 E 文的:我直接说关键部分
找到
改完就可以了!
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.ActionBarIf supporting only API level
11 and higher: import android.app.ActionBar
现在为什么这个应用程序崩溃了?
解决方法
您定位的是哪个Android版本?
我建议你使用新的Toolbar而不是ActionBar,因为它的使用方式更灵活.
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应用中返回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等更多相关知识的信息可以在本站进行查询。
本文标签: