Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android为什么我不能将项目主题更改为noactionbar_Android_Themes - Fatal编程技术网

android为什么我不能将项目主题更改为noactionbar

android为什么我不能将项目主题更改为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

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
            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>