扩展ListActivity时,动作条不工作 [英] ActionBar not working when extending ListActivity

查看:183
本文介绍了扩展ListActivity时,动作条不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个令人困惑的问题。我有2行动MainActivity:更新和注销。问题是,当我运行,它扩展了活动的 ListActivity 操作栏没有显示。 下面我有2图像有2种不同的扩展类型的 MainActivity

扩展ActionBarActivity例如

 公共类MainActivity扩展ActionBarActivity
 

链接到图片:见图片

扩展 ListActivity 的结果是一样的,如下面的图片。基本上我想要做的主要活动的ListView 和一个 ction条,以便用户能够为更新注销 使用操作栏。但似乎这是行不通的,我需要您的帮助。我试着在网上搜索我找不到任何帮助的。

 公共类MainActivity扩展ListActivity
 

链接到图片:见图片

在这里,你可以看到我的清单文件:

 < XML版本=1.0编码=UTF-8&GT?;
<舱单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    包=com.example.florin.statusapp>

    <使用-权限的Andr​​oid:名称=android.permission.INTERNET对/>
    <使用-权限的Andr​​oid:名称=android.permission.ACCESS_NETWORK_STATE/>
    <使用-SDK安卓的minSdkVersion =11
        机器人:targetSdkVersion =21/>
    <应用

        机器人:allowBackup =真
        机器人:图标=@可绘制/ ic_launcher
        机器人:标签=@字符串/ APP_NAME
        机器人:主题=@风格/ AppTheme>
        <活动
            机器人:名称=。MainActivity
            机器人:标签=@字符串/ APP_NAME
             >

            <意向滤光器>
                <作用机器人:名称=android.intent.action.MAIN/>

                <类机器人:名称=android.intent.category.LAUNCHER/>
            &所述; /意图滤光器>

        < /活性GT;
        <活动
            机器人:名称=。RegisterActivity
            机器人:标签=@字符串/ title_activity_register>
        < /活性GT;
        <活动
            机器人:名称=。LoginActivity
            机器人:标签=@字符串/ title_activity_login>
        < /活性GT;
        <活动
            机器人:名称=。UpdateStatusActivity
            机器人:标签=@字符串/ title_activity_update_status>


        < /活性GT;
    < /用途>

< /舱单>
 

我MainActivity.java

 公共类MainActivity扩展ListActivity {

私人列表<的parseObject> mStatusObjects;


@覆盖
保护无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_main);

    //启用本地数据存储。
    Parse.initialize(这一点,福,酒吧);


    ParseUser的currentUser = ParseUser.getCurrentUser();
    如果(的currentUser!= NULL){



    } 其他 {
        //显示登录界面
        意图toLoginActivity =新的意图(MainActivity.this,LoginActivity.class);
        startActivity(toLoginActivity);

    }


}



@覆盖
公共布尔onCreateOptionsMenu(功能菜单){
    //充气菜单;这增加了项目操作栏,如果它是present。
    //getMenuInflater().inflate(R.menu.menu_main,菜单);
    //返回true;
    MenuInflater充气= getMenuInflater();
    inflater.inflate(R.menu.menu_main,菜单);
    返回super.onCreateOptionsMenu(菜单);
}

@覆盖
公共布尔onOptionsItemSelected(菜单项项){
    //处理动作栏项目点击这里。将操作栏
    //自动在主/向上按钮操作的点击,只要
    //你在AndroidManifest.xml中指定一个父活动。
    INT的id = item.getItemId();

    // noinspection SimplifiableIfStatement
    开关(ID){
        案例R.id.updateStatus:
            //需要用户更新活动
            意图toMainActivityIntent =新的意图(MainActivity.this,UpdateStatusActivity.class);
            startActivity(toMainActivityIntent);
            打破;

        案例R.id.LogoutUser:
            //注销用户
            ParseUser.logOut();
            //需要用户登录活动
            意图toLoginActivityIntent =新的意图(MainActivity.this,LoginActivity.class);
            startActivity(toLoginActivityIntent);
            打破;
    }

    返回super.onOptionsItemSelected(项目);
}
 

menu_main.xml 作为动作栏:

 <菜单的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
    的xmlns:程序=htt​​p://schemas.android.com/apk/res-auto
    的xmlns:工具=htt​​p://schemas.android.com/tool​​s
    工具:上下文=com.example.florin.statusapp.MainActivity>
    <项目机器人:ID =@ + ID / updateStatus
        机器人:标题=更新
        应用程序:showAsAction =总是/>

    <项目
        机器人:ID =@ + ID / LogoutUser
        机器人:标题=注销
        应用程序:showAsAction =从不

        />

< /菜单>
 

解决方案

这应该与你的主题。动作条全息后只支持主题。

<一个href="http://developer.android.com/guide/topics/ui/actionbar.html#Adding">http://developer.android.com/guide/topics/ui/actionbar.html#Adding

您styles.xml可能有这样的:

 &LT;样式名称=AppTheme父=Theme.AppCompat.Light.DarkActionBar&GT;
 

您可以把它改成这样使用全息主题:

 &LT;样式名称=AppTheme父=机器人:Theme.Holo&GT;
 

I have a confusing problem. I have a MainActivity with 2 actions : Update and Logout. The problem is when I run the activity that extends ListActivity the action bar doesn't appear. Below I have 2 images with 2 different extend types in MainActivity

Extending ActionBarActivity example

public class MainActivity extends ActionBarActivity

Link to image: SEE IMAGE

By extends ListActivity the result is the same as in the picture below. Basically I want to make the main activity with a ListView and an action bar so that the user is able to update and logout using the action bar. But it seems it doesn't work and i need your help. I tried searching on the web i couldn't find anything that helped.

public class MainActivity extends ListActivity

Link to image: SEE IMAGE

Here you can see my manifest file:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.florin.statusapp" >

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-sdk android:minSdkVersion="11"
        android:targetSdkVersion="21"/>
    <application

        android:allowBackup="true"
        android:icon="@drawable/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>
        <activity
            android:name=".RegisterActivity"
            android:label="@string/title_activity_register" >
        </activity>
        <activity
            android:name=".LoginActivity"
            android:label="@string/title_activity_login" >
        </activity>
        <activity
            android:name=".UpdateStatusActivity"
            android:label="@string/title_activity_update_status" >


        </activity>
    </application>

</manifest>

My MainActivity.java

public class MainActivity extends ListActivity{

private List<ParseObject> mStatusObjects;


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

    // Enable Local Datastore.
    Parse.initialize(this, "foo", "bar");


    ParseUser currentUser = ParseUser.getCurrentUser();
    if (currentUser != null) {



    } else {
        // show the login screen
        Intent toLoginActivity = new Intent(MainActivity.this, LoginActivity.class);
        startActivity(toLoginActivity);

    }


}



@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;
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu_main, menu);
    return super.onCreateOptionsMenu(menu);
}

@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
    switch (id) {
        case R.id.updateStatus:
            // take user to update activity
            Intent toMainActivityIntent = new Intent(MainActivity.this, UpdateStatusActivity.class);
            startActivity(toMainActivityIntent);
            break;

        case R.id.LogoutUser:
            //Log out user
            ParseUser.logOut();
            // take user to login activity
            Intent toLoginActivityIntent = new Intent(MainActivity.this, LoginActivity.class);
            startActivity(toLoginActivityIntent);
            break;
    }

    return super.onOptionsItemSelected(item);
}

and the menu_main.xml for the action bar:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.example.florin.statusapp.MainActivity">
    <item android:id="@+id/updateStatus"
        android:title="Update"
        app:showAsAction="always" />

    <item
        android:id="@+id/LogoutUser"
        android:title="Logout"
        app:showAsAction="never"

        />

</menu>

解决方案

This should be related to your theme. Action bars are only supported on themes after holo.

http://developer.android.com/guide/topics/ui/actionbar.html#Adding

Your styles.xml probably has something like:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

You can change it to this to use the holo theme:

<style name="AppTheme" parent="android:Theme.Holo">

这篇关于扩展ListActivity时,动作条不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆