在Android中,扩展Lifecycler Activity,Activity,ActionBarActivity和AppCompactActivity之间的主要区别是什么?这些类在使用方面有何不同?
android android-fragments android-activity android-actionbar
我做了一个全新的项目.我已将项目添加到menu布局文件中.这些项目不会显示在操作栏的右侧.我记得有一个带有三个点的图标会打开菜单.

这是我的 Activity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(new ColorDrawable(Color.BLUE));
actionBar.show();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的 main.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_option1"/>
<item
android:id="@+id/action_settings34"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_option2"/>
<item
android:id="@+id/action_settings3"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_option3"/>
</menu>
Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用appcompat.我希望菜单项显示在操作栏上或至少溢出(3个点)以在没有空间时显示它们.操作栏上有很多空间,但它们仍然没有显示出来.菜单流从底部升起,仅在按下菜单按钮时也是如此.
menu_activity.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_lang"
android:showAsAction="always"
android:title="@string/menu_lang"
android:icon="@android:drawable/ic_input_lang"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
活动:
@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_activity, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
这篇文章说,当硬件菜单按钮存在时,它不起作用.但其他应用程序可以在同一设备上显示项目.所以,这个答案似乎是不正确的.有人可以帮忙吗?

我有一个非常简单的代码,但即使经过长时间的谷歌搜索我也无法解决的问题.我希望在ActionBar中有一些Action Item,但每当我运行App时,我看到的只是一个带有App徽标和标题的ActionBar,但没有Action Item.
如果你可以帮助我,那将是很棒的,可能我只是错过了最明显的事情;)
这是我的ActionBarActivity中的方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
这是ActionBar的相关.xml文件(名为main_activity_actions.xml):
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="always" />
<item android:id="@+id/action_compose"
android:icon="@drawable/ic_action_compose"
android:title="@string/action_compose"
android:showAsAction="always"/>
</menu>
Run Code Online (Sandbox Code Playgroud) 我下面的教程developer.android.com并尝试添加动作条上的项目.
虽然我添加了所有代码,但搜索操作显示为溢出元素而不是操作按钮元素.我尝试了带有软键盘选项的4"和7"虚拟设备.
这里是
main_activity_actions.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
android:icon="@drawable/ic_action_search"
android:title="@string/action_search"
android:showAsAction="ifRoom" />
<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:showAsAction="never" />
</menu>
Run Code Online (Sandbox Code Playgroud)
下面是MainActivity.java的onCreateOptionsMenu方法.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

我想了解导致这个问题的原因.
我正在尝试将一些操作项添加到我的支持操作栏.在我的活动中,我还在操作栏中添加了选项卡.
这是活动的摘录:
public class ShowEmails extends ActionBarActivity implements ShowEmailsFragmentInteractionListener {
private IMAPClientService service;
private boolean bound;
private ActionBar ab;
private MailDBHelper mdbhelper;
private SQLiteDatabase db;
private Intent client_service;
<.........................>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.client_service = new Intent(this, IMAPClientService.class);
this.mdbhelper = new MailDBHelper(this.getApplicationContext(), MailDBHelper.MAIL_DB_NAME, null, MailDBHelper.MAIL_DB_VERSION);
this.db = this.mdbhelper.openWriteable();
this.ab = this.getSupportActionBar();
this.ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
this.ab.show();
Tab t = ab.newTab().setText(R.string.all_emails)
.setTabListener(new TabListener<ShowEmailsFragment>(this, "all", ShowEmailsFragment.class));
ab.addTab(t);
new LoadTabsInBackground().execute();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds …Run Code Online (Sandbox Code Playgroud) 我有一个项目,我想要始终使用AppCompat库在操作栏中显示.它只是一个使用默认溢出图像的子菜单.
这在API级别v8-13上对我不起作用,我已经完成了开发人员指南所说的一切,包括添加我自己的命名空间.
我正在使用一个自定义样式,其中Theme.AppCompat作为其父(下图).
这是我的第一篇帖子,所以我没有足够的声望点来发布活动图像,但是当我按下菜单按钮时,操作栏中缺少该项目,菜单显示在底部.
任何反馈将不胜感激!!
AndroidManifest.xml中:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myproject"
android:installLocation="auto"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
android:debuggable="true"
android:icon="@drawable/my_app_icon"
android:label="@string/app_name"
android:theme="@style/CustomActionBarTheme" >
<uses-library android:name="com.google.android.maps" />
<activity
android:name=".ui.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
menu.xml文件
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:MyApp="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/overflow"
MyApp:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_dark"
MyApp:showAsAction="always"
android:icon="@drawable/abc_ic_menu_moreoverflow_normal_holo_dark"
android:showAsAction="always">
<menu>
<item
android:id="@+id/action_about"
android:icon="@drawable/about_icon"
android:title="About"/>
<item
android:id="@+id/action_feedback"
android:icon="@drawable/feedback_icon"
android:title="Feedback"/>
<item
android:id="@+id/action_settings"
android:icon="@drawable/settings_icon"
android:title="@string/action_settings"/>
</menu>
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
styles.xml
<resources>
<style name="CustomActionBarTheme" parent="@style/Theme.AppCompat">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<item name="actionBarStyle">@style/MyActionBar</item>
</style>
<style name="MyActionBar" …Run Code Online (Sandbox Code Playgroud) 嗨,
我正在使用Honeycomb android 3.0开发一个Android应用程序.我试着在Action Bar中显示一个菜单.菜单上有一个图标和斜角.当我们点击菜单项时,它会以下拉列表的形式显示其项目.下拉列表中的项目包含项目名称,但显示的是图标.我希望在单击菜单时出现的下拉列表中的标题旁边显示一个图标.任何人都可以帮我解决这个问题.我的xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/addserver"
android:icon="@android:drawable/ic_menu_add"
android:title="Add Server"
android:showAsAction="ifRoom|withText"
>
<menu>
<item android:id="@+id/fileserver"
android:icon="@android:drawable/ic_menu_add"
android:title="File Server"
android:onClick="onCreate"
android:showAsAction="always"/>
<item android:id="@+id/sharepoint"
android:icon="@android:drawable/ic_menu_add"
android:title="Share Point"
android:onClick="onCreate" />
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
最初它会在左侧显示带有图标的添加服务器.点击它将显示fileserver,sharepoint作为下拉列表,带有out图标虽然我给了android:icon语句.
任何人都可以帮我解决这个问题吗?
提前致谢,
这是我的general.xml档案
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:showAsAction="never"
android:title="@string/action_settings"/>
<item
android:id="@+id/next"
android:title="Next"
android:visible="true"
android:enabled="true"
android:showAsAction="always"
android:orderInCategory="1">
</item>
<item
android:id="@+id/Previous"
android:title="Previous"
android:visible="true"
android:enabled="true"
android:orderInCategory="2"
android:showAsAction="always">
</item>
<item android:id="@+id/star"
android:icon="@drawable/ic_action_important"
android:enabled="true"
android:orderInCategory="0"
android:showAsAction="always"
android:title="Star"
android:visible="true">
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
这是我的代码
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.general, menu);
getSupportActionBar().setDisplayShowHomeEnabled(false);
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#003f84")));
return true;
}
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是菜单项没有显示在操作栏中.我在这里做错了吗?
android android-appcompat android-actionbar android-support-library
它在5.1上工作正常,但在4.1.2上没有
我错过了什么?
这是活动xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myApp="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/transfer"
android:title="@string/transfer"
android:icon="@drawable/ic_transfer"
myApp:showAsAction="always" />
<item android:id="@+id/refresh"
android:title="@string/refresh"
android:icon="@drawable/ic_refresh"
myApp:showAsAction="always" />
<item android:id="@+id/about"
android:title="@string/about"
android:icon="@android:drawable/ic_menu_info_details"
android:orderInCategory="100"
myApp:showAsAction="never" />
<item android:id="@+id/help"
android:title="@string/title_activity_help"
android:icon="@android:drawable/ic_menu_info_details"
android:orderInCategory="101"
myApp:showAsAction="never" />
<item android:id="@+id/settings"
android:title="@string/settings"
android:icon="@android:drawable/ic_menu_info_details"
android:orderInCategory="102"
myApp:showAsAction="never" />
<item android:id="@+id/search"
android:title="@string/search"
android:icon="@android:drawable/ic_menu_info_details"
android:orderInCategory="103"
myApp:showAsAction="never" />
<item android:id="@+id/logout"
android:title="@string/logout"
android:icon="@android:drawable/ic_menu_info_details"
android:orderInCategory="104"
myApp:showAsAction="never" />
</menu>
Run Code Online (Sandbox Code Playgroud)
这是我的活动类(扩展了另一个扩展AppCompatActivity的活动):
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.my_activity, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)
我使用以下appcompat库:
'com.android.support:appcompat-v7:22.2.0'
Run Code Online (Sandbox Code Playgroud) android android-actionbar android-4.1-jelly-bean appcompatactivity
当使用ActionbarCompat作为Actionbar BackPort时,我遇到的问题是action-icons没有显示 - 相同的代码/ res与actionbarsherlock一起使用.
我做错了什么还是不支持?我也错过了getSupportMenuInflater()ABS在ActionBar compat中的整个Menu/MenuItem 部分 - 任何人都可以对此有所了解吗?
android ×11