android为什么我不能将项目主题更改为noactionbar
manifest.xmlandroid为什么我不能将项目主题更改为noactionbar,android,themes,Android,Themes,manifest.xml 04-23 15:03:57.589 2045-2045/com.it.fyp.tab E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{com.it.fyp.tab/com.it.fyp.tab.MainActivity}: java.lang.NullPointerException
04-23 15:03:57.589 2045-2045/com.it.fyp.tab E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.it.fyp.tab/com.it.fyp.tab.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.it.fyp.tab.MainActivity.onCreate(MainActivity.java:61)
at android.app.Activity.performCreate(Activity.java:5008)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
MainActivity.java
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.it.fyp.tab" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
公共类MainActivity扩展ActionBarActivity实现AdapterView.OnItemClickListener{
私人抽屉布局;
私有列表视图列表视图;
私有字符串[]行星={A”,“B”,“C”,“D”,“E”};
私人诉讼律师;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(listView)findViewById(R.id.DroperList);
setAdapter(新的ArrayAdapter(这个,android.R.layout.simple_list_item_1,planets));
setOnItemClickListener(this);
Toolbar Toolbar=(Toolbar)findViewById(R.id.Toolbar);
抽屉布局=(抽屉布局)findViewById(R.id.抽屉布局);
DroperListener=new ActionBarDrawerToggle(此,抽屉布局,工具栏,R.string.open\u抽屉,R.string.close\u抽屉){
@凌驾
打开图纸上的公共空白(视图抽屉视图){
Toast.makeText(MainActivity.this,“抽屉已打开”,Toast.LENGTH_SHORT.show();
无效操作菜单();
syncState();
}
@凌驾
图纸上的公共空白已关闭(视图抽屉视图){
Toast.makeText(MainActivity.this,“抽屉关闭”,Toast.LENGTH_SHORT.show();
无效操作菜单();
syncState();
}
};
抽屉布局。设置抽屉布局器(抽屉布局器);
如果(工具栏!=null){
设置支持操作栏(工具栏);
}否则{
Log.i(“空工具栏”、“是”);
}
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Toast.makeText(这个“点击”,Toast.LENGTH_SHORT).show();
选择项目(位置);
}
私有void selectItem(内部位置){
setItemChecked(位置,true);
setTitle(行星[位置]);
}
公共无效集合标题(字符串标题){
getSupportActionBar().setTitle(标题);
}
}
创建如下主题-
public class MainActivity extends ActionBarActivity implements AdapterView.OnItemClickListener{
private DrawerLayout drawerLayout;
private ListView listView;
private String[] planets = {"A", "B", "C", "D", "E"};
private ActionBarDrawerToggle drawerListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.drawerList);
listView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, planets));
listView.setOnItemClickListener(this);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
drawerListener = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.open_drawer, R.string.close_drawer){
@Override
public void onDrawerOpened(View drawerView) {
Toast.makeText(MainActivity.this, "Drawer Opened", Toast.LENGTH_SHORT).show();
invalidateOptionsMenu();
syncState();
}
@Override
public void onDrawerClosed(View drawerView) {
Toast.makeText(MainActivity.this, "Drawer Closed", Toast.LENGTH_SHORT).show();
invalidateOptionsMenu();
syncState();
}
};
drawerLayout.setDrawerListener(drawerListener);
if (toolbar != null){
setSupportActionBar(toolbar);
}else{
Log.i("NULL TOOLBAR", "YES");
}
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(this, "clicked", Toast.LENGTH_SHORT).show();
selectItem(position);
}
private void selectItem(int position) {
listView.setItemChecked(position, true);
setTitle(planets[position]);
}
public void setTitle(String title) {
getSupportActionBar().setTitle(title);
}
}
符合事实的
错误的
我认为使用父级自定义主题的最简单方法是直接在清单中声明主题:
<style name="myAppTheme" parent="@android:style/Theme.Holo">
<item name="android:windowNoTitle">True</item>
<item name="android:windowActionBar">False</item>
</style>
然后,在单独的XML样式中,将该主题作为父对象:
android:theme="@android:style/Theme.AppCompat.Light.NoActionBar"
请将您的AndroidManifest.xml包含在您的帖子中。我添加了它@PiotrGolinski@cygery................Please包括MainActivity代码。是否添加了AppCompat库?添加此主题后,只需清理您的项目并在清单中使用它,即可工作
android:theme="@android:style/Theme.AppCompat.Light.NoActionBar"
<style name="AppTheme" parent="android:Theme.AppCompat.Light.NoActionBar"
<item name=..../>
....
</style>
<activity>
android:theme="@style/AppTheme" >
</activity>