DialogFragmentとActivity間でのデータの受け渡し練習。
Q1
リストビューに表示されたアイテムを長押しで削除できるようにする。その際確認のダイアログを表示すること。
[実行例]
スタート画面

項目を長押しするとダイアログを表示する
(下図はitem2を長押しした場合)

はいを押すと項目が削除される

●activity_main.xml
01 | <? xml version = "1.0" encoding = "utf-8" ?> |
02 | < android.support.constraint.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android" |
03 | xmlns:app = "http://schemas.android.com/apk/res-auto" |
04 | android:layout_width = "match_parent" |
05 | android:layout_height = "match_parent" |
10 | android:layout_width = "368dp" |
11 | android:layout_height = "495dp" |
12 | app:layout_constraintTop_toTopOf = "parent" |
13 | android:layout_marginTop = "8dp" |
14 | android:layout_marginLeft = "8dp" |
15 | app:layout_constraintLeft_toLeftOf = "parent" |
16 | android:layout_marginRight = "8dp" |
17 | app:layout_constraintRight_toRightOf = "parent" /> |
18 | </ android.support.constraint.ConstraintLayout > |
●MainActivity.java
01 | import android.app.Dialog; |
02 | import android.app.DialogFragment; |
03 | import android.content.DialogInterface; |
04 | import android.os.Bundle; |
05 | import android.support.v7.app.AlertDialog; |
06 | import android.support.v7.app.AppCompatActivity; |
07 | import android.view.View; |
08 | import android.widget.AdapterView; |
09 | import android.widget.ArrayAdapter; |
10 | import android.widget.ListView; |
11 | import android.widget.Toast; |
13 | import java.util.ArrayList; |
16 | public class MainActivity extends AppCompatActivity { |
18 | private ArrayAdapter<String> adapter; |
19 | private List<String> list= new ArrayList<>(); |
23 | protected void onCreate(Bundle savedInstanceState) { |
24 | super .onCreate(savedInstanceState); |
25 | setContentView(R.layout.activity_main); |
26 | lv=(ListView)findViewById(R.id.lv); |
30 | adapter= new ArrayAdapter<String>( this ,android.R.layout.simple_list_item_1,list); |
31 | lv.setAdapter(adapter); |
32 | lv.setOnItemLongClickListener( new AdapterView.OnItemLongClickListener() { |
34 | public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { |
35 | String item=list.get(position); |
36 | DialogFragment dialog= new MyDialog(); |
38 | Bundle bundle= new Bundle(); |
39 | bundle.putString( "item" ,item); |
40 | dialog.setArguments(bundle); |
42 | dialog.show(getFragmentManager(), "tag" ); |
48 | public void deleteItem(String item){ |
50 | Toast.makeText( this ,item+ "を削除しました" ,Toast.LENGTH_SHORT).show(); |
53 | public static class MyDialog extends android.app.DialogFragment{ |
55 | public Dialog onCreateDialog(Bundle savedInstanceState) { |
56 | final String item=getArguments().getString( "item" ); |
57 | AlertDialog.Builder builder= new AlertDialog.Builder(getActivity()); |
58 | builder.setTitle( "確認" ) |
59 | .setMessage( "[" +item+ "]本当に削除してよろしいですか?" ) |
60 | .setPositiveButton( "はい" , new DialogInterface.OnClickListener() { |
62 | public void onClick(DialogInterface dialog, int which) { |
63 | MainActivity activity=(MainActivity)getActivity(); |
64 | activity.deleteItem(item); |
67 | .setNegativeButton( "いいえ" , new DialogInterface.OnClickListener() { |
69 | public void onClick(DialogInterface dialog, int which) { |
74 | return builder.create(); |
コメント