2016-08-06 26 views
1

Ich verwende den setActionBarTitle(); den Titel der Aktionsleiste zu ändern, es in onCreate() Verfahren gut funktionieren, aber es hat nicht funktioniert, wenn ich es auf den Knopf klicken Zuhörer implementieren möchtensetTitle() funktioniert nicht in Android auf Taste clicklistner

public class ScrollingActivity extends AppCompatActivity { 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_scrolling); 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     CollapsingToolbarLayout mToolbarlayout= (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout); 
     setSupportActionBar(toolbar); 

     Button newbutton= (Button) findViewById(R.id.changetitle); 
     if (newbutton != null) { 
      newbutton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Toast.makeText(ScrollingActivity.this, "Hi", Toast.LENGTH_SHORT).show(); 
        setActionBarTitle("HI"); 
       } 
      }); 
     } 
     } 

    public void setActionBarTitle(String title) { 
     //noinspection ConstantConditions 
     getSupportActionBar().setTitle(title); //check not working 

    } 

} 

die xml, die für die Aktivität verwendet wird, in dem ich den Titel

<?xml version="1.0" encoding="utf-8"?> 
    <android.support.design.widget.CoordinatorLayout 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:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fitsSystemWindows="true" 
     tools:context="appcom.taskremainder.calender.ScrollingActivity"> 

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/app_bar" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/app_bar_height" 
      android:fitsSystemWindows="true" 
      android:theme="@style/AppTheme.AppBarOverlay"> 

      <android.support.design.widget.CollapsingToolbarLayout 
       android:id="@+id/toolbar_layout" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:fitsSystemWindows="true" 
       app:contentScrim="?attr/colorPrimary" 
       app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

       <android.support.v7.widget.Toolbar 
        android:id="@+id/toolbar" 
        android:layout_width="match_parent" 
        android:layout_height="?attr/actionBarSize" 
        app:layout_collapseMode="pin" 
        app:popupTheme="@style/AppTheme.PopupOverlay" /> 

      </android.support.design.widget.CollapsingToolbarLayout> 
     </android.support.design.widget.AppBarLayout> 

     <include layout="@layout/content_scrolling" /> 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/fab" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="@dimen/fab_margin" 
      android:src="@android:drawable/ic_menu_edit" 
      app:layout_anchor="@id/app_bar" 
      app:layout_anchorGravity="bottom|end" /> 

    </android.support.design.widget.CoordinatorLayout 

> 
+1

Sind Sie sicher, dass 'newbutton' nicht null ist? – LordRaydenMK

+0

ja es ist nicht null –

+0

Replace getSupportActionBar(). SetTitle (Titel) zu setTitile (Titel); – vinoth12594

Antwort

0

Ja Sie ändern möchten, sind richtig, dass in onCreate() den Titel des ActionBar/ToolBar ändert, wird ein nd wenn wir die Methode aufrufen, um den Titel auf Button zu ändern, klicken Sie darauf.

wird die Schaltfläche in der definiert:

<include layout="@layout/content_scrolling"/> 

ich viele verschiedene Arten und eher zufällig auf dieses Problem https://code.google.com/p/android/issues/detail?id=77763

versucht, habe ich eine Arbeit um, wenn Sie (Titel ändern) versuchen möchten

public class MainActivity extends AppCompatActivity { 

Toolbar toolbar; 
android.support.v7.app.ActionBar actionBar; 
CollapsingToolbarLayout mToolbarlayout; 
Button newButton; 

// On every click I will change the value of i 
static int i=1; 

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

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    mToolbarlayout= (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout); 
    newButton= (Button) findViewById(R.id.changetitle); 

    setSupportActionBar(toolbar); 
    actionBar=getSupportActionBar(); 

    newButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //oldWay(); 
      newWay(); 
      } 
    }); 
} 

private void oldWay() { 
    Toast.makeText(MainActivity.this, ""+actionBar.getTitle(), Toast.LENGTH_SHORT).show(); 
    actionBar.setTitle("Something Else"); 
    Toast.makeText(MainActivity.this/, ""+actionBar.getTitle(), Toast.LENGTH_SHORT).show(); 

    //Toast says that value has changed, but it doesn't on screen 
} 

private void newWay() { 
    mToolbarlayout.setTitle("" + i++); 
    } 
} 

Lassen Sie mich wissen, ob dies hilft oder nicht.

+0

Dank Ihres Codes mein Problem zu lösen –