2017-05-18 11 views
0

xmlを使用するすべてのページで使用するレイアウトツールバーがあります。 このレイアウトにはいくつかのボタンがあり、toolbar.xmlのボタンのボタンのクリックを処理するクラスを作成したいと思います。これは可能ですか?はいの場合はどうですか?組み込みレイアウトの要素の共通クラス

これは、XMLファイルの私のコードです:あなたができるもちろん

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:orientation="vertical"> 

<RelativeLayout 
    android:id="@+id/rl" 
    android:layout_width="match_parent" 
    android:layout_height="56dp"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="110dp" 
     android:layout_above="@+id/relativeLayout2" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:background="#ffa500" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="?attr/actionBarTheme" 
     android:visibility="visible" /> 

    <EditText 
     android:id="@+id/editText" 
     android:layout_width="match_parent" 
     android:layout_height="35dp" 
     android:layout_alignBottom="@+id/toolbar" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="10dp" 
     android:background="@drawable/round_edges" 
     android:ems="10" 
     android:hint="Search" 
     android:imeOptions="actionSearch" 
     android:inputType="textPersonName" 
     android:paddingLeft="10dp" 
     android:visibility="invisible" 
     android:layout_marginLeft="20dp" 
     android:layout_marginRight="20dp"/> 

</RelativeLayout> 

<ImageButton 
    android:id="@+id/button2" 
    android:layout_width="56dp" 
    android:layout_height="56dp" 
    android:layout_alignParentTop="true" 
    android:layout_marginEnd="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_toLeftOf="@+id/button1" 
    android:layout_toStartOf="@+id/button1" 
    android:background="@android:color/transparent" 
    android:src="@mipmap/cart" /> 

<ImageButton 
    android:id="@+id/button1" 
    android:layout_width="56dp" 
    android:layout_height="56dp" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:background="@android:color/transparent" 
    android:src="@mipmap/contact" /> 

<ImageButton 
    android:id="@+id/button3" 
    android:layout_width="56dp" 
    android:layout_height="56dp" 
    android:layout_alignParentTop="true" 
    android:layout_marginEnd="8dp" 
    android:layout_marginRight="8dp" 
    android:layout_toLeftOf="@+id/button2" 
    android:layout_toStartOf="@+id/button2" 
    android:background="@android:color/transparent" 
    android:src="@mipmap/search" /> 

<ImageButton 
    android:id="@+id/button4" 
    android:layout_width="56dp" 
    android:layout_height="56dp" 
    android:layout_alignParentTop="true" 
    android:layout_marginEnd="9dp" 
    android:layout_marginRight="9dp" 
    android:layout_toLeftOf="@+id/button3" 
    android:layout_toStartOf="@+id/button3" 
    android:background="@android:color/transparent" 
    android:src="@mipmap/phone" /> 

<ImageButton 
    android:id="@+id/button0" 
    android:layout_width="56dp" 
    android:layout_height="56dp" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentTop="true" 
    android:background="@android:color/transparent" 
    android:src="@mipmap/ic_launcher" /> 
</RelativeLayout> 

答えて

0

が、すべてのアクションのためにあなたは、そのアクションを呼び出している活動/フラグメントからコンテキストを渡す必要があります。意図を使用する方法

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

    TestClass tc = new TestClass(); 
    tc.getEditText(this,findViewById(android.R.id.content)); 
    tc.setImageButton(this,findViewById(android.R.id.content)); 

} 
+0

:あなたのレイアウトからEDITTEXTとButton1を扱うためのクラスの

例(あなた自身を追加することができ、他の要素)

public class TestClass { public void getEditText(Context context, View view){ EditText et = (EditText) view.findViewById(R.id.editText); Toast.makeText(context,"Here I handle editText!",Toast.LENGTH_SHORT).show(); } public void setImageButton(final Context context, View view){ ImageButton imageButton = (ImageButton) view.findViewById(R.id.button1); imageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // do something Toast.makeText(context,"button1 clicked!",Toast.LENGTH_SHORT).show(); } }); } } 

あなたは、このようなあなたの活動からこのメソッドを呼び出しますこのクラスでは?? @tompadre –

+0

あなたはなぜインテントを使用しますか?別クラスのアイデアはゲッターとセッターを使うことだと思った?私はあなたが望むすべての方法のためのメソッドを作ることができるTestCLass https://stackoverflow.com/questions/2036970/how-do-getters-and-setters-work – tompadre

+0

ボタンをクリックすると別のページに行きたいこれを行う方法があるのですか、個々のページごとにコードをコピーして貼り付ける必要がありますか? –

関連する問題