2017-05-30 4 views
0

Ich habe einen floatActionButton und wollen es über Aktivitäten wieder zu verwenden, so dass ich nicht brauchen für jede Aktivität die Onclick-Methode aufzurufen,Reuse floatActionButton android

Im Moment habe ich so etwas wie dieses:

Helper

public class FloatButtonToolbar extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Log.d("ENTERED","GOTIT"); 
      Intent i = new Intent(FloatButtonToolbar.this,CameraCapture.class); 
       startActivity(i); 
      } 
     }); 
    } 

} 

Haupt xml (die, die ich wiederverwenden wollen)

<?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" 
    tools:context="com.example.afcosta.inesctec.pt.android.Helpers.FloatButtonToolbar"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

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

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

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     app:srcCompat="@android:drawable/ic_dialog_email" /> 

</android.support.design.widget.CoordinatorLayout> 

jetzt auf meiner Tätigkeit xml ich habe dies:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fitsSystemWindows="true" 
    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" 
    tools:context="com.example.afcosta.inesctec.pt.android.FamilyLibrary" 
    android:paddingTop="6dp"> 


    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|end" 
     android:layout_margin="@dimen/fab_margin" 
     app:srcCompat="@android:drawable/ic_menu_camera" 
     app:backgroundTint="#f1c40f" 
     tools:layout_constraintRight_creator="1" 
     tools:layout_constraintBottom_creator="1" 
     app:layout_constraintBottom_toBottomOf="parent" 
     android:layout_marginEnd="37dp" 
     app:layout_constraintRight_toRightOf="parent" 
     android:layout_marginBottom="33dp" /> 

die Sache ist im ersten Beispiel oben, ich habe den Onclick Hörer, aber es funktioniert nicht, ist es nicht in den Onclick eingeben , das Protokoll wird nie angezeigt: S

Irgendeine Nachspeisung?

+0

Bitte beenden Sie die irrelevant 'android-Studio' Tag an alle Beiträge hinzufügen. Die von Ihnen verwendete IDE ist ** nicht relevant für Ihre App-Probleme. –

Antwort

1

Sie können dieselbe Ansicht nicht für alle Aktivitäten wiederverwenden. Ansichten gehören zu einer Aktivität. Sie müssen den onClick in jeder Aktivität einrichten. Das Beste, was Sie tun können, ist ein benutzerdefiniertes Kind von FloatingActionButton, das ein onClick-Verhalten in seinem Konstruktor fest codiert.

3

Ansichten können nicht über Aktivitäten als solche verwendet werden, aber Fragmente können sein. Wenn Sie in Android also bestimmte Ansichten oder Viewgroups für alle Aktivitäten zugänglich machen möchten, können Sie ein Fragment dieser Viewgroups erstellen und diese dann über verschiedene Aktivitäten hinweg verwenden. In diesem Fall können Sie ein Fragment mit der Fab erstellen und dann die untere rechte Ecke in jedem Aktivitätslayout für das Fragment reservieren. Wenn die Aktivität erstellt wurde, platzieren Sie das Fragment dort.
Weitere Informationen zu den Fragmenten Sie die folgenden Verweise verwenden: -

https://developer.android.com/guide/components/fragments.html

https://developer.android.com/training/basics/fragments/index.html