2017-12-25 38 views
0

こんにちは:)私はツールバーのImageButtonにonClickメソッドを追加したいと思います。ImageButtonとseflmadeツールバー

onBackPressed()を使用して動作しますが、ImageButton-Clickでは動作しません。アプリケーションがクラッシュしていますが、コンソールからエラーメッセージを読み取ることができず、正しくデバッグする方法がわかりませんでした。

紛失する可能性のあるものを教えてもらえますか? どうもありがとう:)

toolbar_room.xml

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/toolbar_room" 
android:layout_width="match_parent" 
android:layout_height="?attr/actionBarSize" 
android:background="?attr/colorPrimary" 
app:contentInsetLeft="0dp" 
app:contentInsetStart="0dp"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <ImageButton 
     android:layout_width="?attr/actionBarSize" 
     android:layout_height="match_parent" 
     android:background="@drawable/ic_back" 
     android:id="@+id/btn_roomBack" 
     android:onClick="backToMain"/> 
</LinearLayout> 

activity_room.xml

<android.support.v7.widget.LinearLayoutCompat 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="de.hftl.smartcast.RoomActivity" 
android:orientation="vertical"> 

<include layout="@layout/toolbar_room"></include> 
//Code 

RoomActivity.java

public class RoomActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_room); 
} 
public void backToMain(){ 
    AlertDialog.Builder alertDlg = new AlertDialog.Builder(this); 
    alertDlg.setMessage("Text"); 
    alertDlg.setCancelable(false); 

    alertDlg.setPositiveButton("yeah", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialogInterface, int i) { 
      RoomActivity.super.onBackPressed(); 
     } 
    }); 
    alertDlg.setNegativeButton("nope", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialogInterface, int i) { 
     } 
    }); 
    alertDlg.create().show(); 
} 

注:私は私のAndroidManifest.xmlにandroid:parentActivityName=".RoomActivity" を追加しました。

答えて

0

このようにXMLからonClickを使用するには、Viewパラメータを関数に渡す必要があります。

public void backToMain(View v){ 
+0

ありがとうございます!次に、vを 'AlertDialog.Builder alertDlg = new AlertDialog.Builder(v);'に渡さなければなりません。 –

+0

あなたはそれをする必要はありません。なぜなら、 'ビルダー(this)'の 'this'はコンテキストのためです。 – VolkanSahin45