2015-04-03 3 views
2

Я все еще слежу за обучением в андроиде. Я сталкиваюсь с проблемами в меню панели действий, можете ли вы рассказать мне, почему мой бар действий не отображается? здесь код ниже:Действие, не показывающее во время моего первого обучения андроидам приложения

AndroidManifest.xml

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

    <uses-sdk 
     android:minSdkVersion="16" 
     android:targetSdkVersion="21" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.helloworld.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="com.example.helloworld.DisplayMessageActivity" 
     android:label="@string/title_activity_display_message" 
     android:parentActivityName="com.example.Helloworld.MainActivity" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.Helloworld.MyActivity" /> 
    </activity> 

    </application> 

</manifest> 

добавить его значок в вытяжке

MainActivity.java

package com.example.helloworld; 
    import android.support.v7.app.ActionBarActivity; 
    import android.support.v4.app.Fragment; 
    import android.content.Intent; 
    import android.os.Bundle; 
    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.EditText; 
    public class MainActivity extends ActionBarActivity { 

     public final static String EXTRA_MESSAGE = "com.example.Helloworld.MESSAGE"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    public void sendMessage(View view) { 
     Intent intent = new Intent(this, DisplayMessageActivity.class); 
     EditText editText = (EditText) findViewById(R.id.edit_message); 
     String message = editText.getText().toString(); 
     intent.putExtra(EXTRA_MESSAGE, message); 
     startActivity(intent); 
    } 



    /* @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); 

      MenuInflater inflater = getMenuInflater(); 

      inflater.inflate(R.menu.main_activity_actions, menu); 
      return super.onCreateOptionsMenu(menu); 
     }*/ 

    @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); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle presses on the action bar items 
     switch (item.getItemId()) { 
      case R.id.action_search: 
       openSearch(); 
       return true; 
      case R.id.action_settings: 
       openSettings(); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 
    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 

     public PlaceholderFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.fragment_main, container, false); 
      return rootView; 
     } 
    } 
    public void openSearch() { 
     //Do something here. 
    } 

    public void openSettings() { 
     //Do something here. 
    } 
} 

main_activity_actions.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:yourapp="http://schemas.android.com/apk/res-auto" > 
    <!-- Search, should appear as action button --> 

    <item android:id="@+id/action_search" 
      android:icon="@drawable/ic_action_search" 
      android:title="@string/action_search" 
      yourapp:showAsAction="ifRoom" /> 

    <item android:id="@+id/action_settings" 
      android:title="@string/action_settings" 
      android:showAsAction="never" /> 

</menu> 

Струны

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <string name="app_name">Helloworld</string> 
    <string name="hello_world">Hello world!</string> 
    <string name="action_settings">Settings</string> 
    <string name="edit_message">Message</string> 
    <string name="button_send">Send</string> 
    <string name="title_activity_main">MainActivity</string> 
    <string name="title_activity_display_message">My Message</string> 
    <string name="action_search">Search</string> 

</resources> 

этого style.xml .. Обратите внимание, что я не изменить что-либо в нем ни учебник упоминается что-то о нем.

<!-- 
    Base application theme, dependent on API level. This theme is replaced 
    by AppBaseTheme from res/values-vXX/styles.xml on newer devices. 
--> 
<style name="AppBaseTheme" parent="Theme.AppCompat.Light"> 
    <!-- 
     Theme customizations available in newer API levels can go in 
     res/values-vXX/styles.xml, while customizations related to 
     backward-compatibility can go here. 
    --> 
</style> 

<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <!-- All customizations that are NOT specific to a particular API-level can go here. --> 
</style> 

+0

'getActionBar()' 'заменить getSupportActionBar()' – EpicPandaForce

+0

@EpicPandaForce Я попробовал это, и это не работало, я думаю, проблема с MainFest .. не знаю – Baalback

+0

что стиль 'андроид: тема =» @ стиль/AppTheme "'? – EpicPandaForce

ответ

2

изменить ваше меню, как показано ниже:

main_activity_actions.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:yourapp="http://schemas.android.com/apk/res-auto" > 
<!-- Search, should appear as action button --> 

<item android:id="@+id/action_search" 
     android:icon="@drawable/ic_action_search" 
     android:title="@string/action_search" 
     yourapp:showAsAction="always" /> 

<item android:id="@+id/action_settings" 
     android:title="@string/action_settings" 
     android:showAsAction="never" /> 

</menu> 
  1. yourapp:showAsAction="always" используется, когда вам нужно, чтобы ваше действие показывалось всегда на панели действий.

  2. yourapp:showAsAction="ifRoom" используется, когда вам нужно ваше действие, чтобы показать на панели действий только место или место, чтобы добавить другое действие.

  3. yourapp:showAsAction="never" используется, когда вам нужно, чтобы ваше действие не отображалось на панели действий, вместо этого оно будет наложено в меню.

+0

Это сработало спасибо – Baalback

Смежные вопросы