2016-08-27 3 views
-1

После использования специальной стрелки стрелки на моей панели инструментов она не возвращается, как я должен, когда я ее нажимаю. Как решить эту проблему?Пользовательская стрелка назад в панели инструментов не работает

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

    final String actionBarColor = "#FFD300"; 

    ActionBar actionBar = getSupportActionBar(); 
    if(actionBar != null) { 
     actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor))); 
     actionBar.setElevation(0); 

     Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow); 
     setSupportActionBar(tBar); 

     tBar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onBackPressed(); 
      } 
     }); 
    } 
} 

toolbar_yellow.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar  
    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" 
    android:id="@+id/toolbar_yellow" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?attr/actionBarSize" 
    android:background="#FFD300" 
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar" 
    app:navigationIcon="@drawable/ic_action_navigation_arrow_back"> 

    <TextView 
     android:id="@+id/toolbar_text" 
     android:text="yellow" 
     android:textColor="#000099" 
     android:textSize="@dimen/abc_text_size_title_material_toolbar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:singleLine="false" 
     android:maxLines="2"/> 

</android.support.v7.widget.Toolbar> 
+0

где пользовательская кнопка возврата в вашем коде? –

+0

@MacaronLover просто проверка моего обновления ответ я добавил в код. – Ironman

+0

Я отправил ответ, который вы можете посмотреть на него –

ответ

0

Я думаю, что вам не хватает этой линии

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setDisplayShowHomeEnabled(true); 

ОБНОВЛЕНИЕ:

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

    final String actionBarColor = "#FFD300"; 

    ActionBar actionBar = getSupportActionBar(); 
    if(actionBar != null) { 
     actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor(actionBarColor))); 
     actionBar.setElevation(0); 

     Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow); 
     setSupportActionBar(tBar); 

     getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_navigation_arrow_back); 

     tBar.setNavigationOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onBackPressed(); 
      } 
     }); 
    } 
} 
+0

Я верю, что это обязательно отобразит 'Up' (на самом деле это не называется стрелкой« Назад »). – Subby

+0

Это все еще не имеет значения. Я использую пользовательскую выделенную для стрелки назад, а не андроидную. – MacaronLover

+0

@MacaronLover снова увидит мой ответ. – Ironman

-1

, если у вас нет каких-либо пользовательскихКнопка назад, даже вы можете отобразить его, установив линию в Manifest.xml

<activity 
      android:name="com.example.myfirstapp.DisplayMessageActivity" 
      android:label="@string/title_activity_display_message" 
      android:parentActivityName="com.example.myfirstapp.MainActivity" > 
      <!-- Parent activity meta-data to support 4.0 and lower --> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.myfirstapp.MainActivity" /> 
     </activity> 

для отображения пользовательского значка

actionBar.setIcon(R.drawable.app_icon); 

и обращении с ним, как

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     finish(); 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

Я знаю, но у меня есть обычная! – MacaronLover

+0

обновил мой ответ –

0

Я упростил свой код что внизу. Поскольку вы устанавливаете цвет Toolbar в файле макета toolbar_yellow.xml, вам не нужно его устанавливать в коде.

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

    Toolbar tBar = (Toolbar) findViewById(R.id.toolbar_yellow); 

    setSupportActionBar(tBar); 
    tBar.setNavigationOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      onBackPressed(); 
     } 
    }); 

} 

Дайте мне знать, если это поможет.

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