无法弄清楚如何显示Android对话框

时间:2016-10-28 04:05:53

标签: java android xml android-layout dialog

我试图在我的应用程序上显示一个对话框,我按照android网站上的确切对话框教程https://developer.android.com/guide/topics/ui/dialogs.html (稍微更改了一些名称)然而,将代码的某些部分放在哪里导致我的代码不起作用是相当模糊的。我不知道此时该做什么。

对话片段

public class CreatePlayerDialogFragment extends DialogFragment {
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the Builder class for convenient dialog construction
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        builder.setMessage(R.string.player_name_dialog)
                .setPositiveButton(R.string.player_name_dialog_yes, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        // FIRE ZE MISSILES!
                    }
                })
                .setNegativeButton(R.string.player_name_dialog_no, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        // User cancelled the dialog
                    }
                });
        // Create the AlertDialog object and return it
        return builder.create();
    }

}

XML文件有问题的按钮是id:button 6

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/content_start_new_game"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.hunte.assassin.StartNewGameActivity"
    tools:showIn="@layout/activity_start_new_game">

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:ems="10"
        android:id="@+id/editText"
        android:textAlignment="center"
        android:hint="Name Of Game"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:textColorLink="?attr/colorPrimaryDark"
        android:selectAllOnFocus="true" />

    <ListView
        android:layout_marginTop="15dp"
        android:layout_height="300dp"
        android:layout_width="250dp"
        android:layout_below="@+id/editText"
        android:layout_alignLeft="@+id/editText"
        android:layout_alignStart="@+id/editText"
        android:id="@+id/Players" />

    <TextView
        android:text=" Players:"
        android:id="@+id/textView3"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:layout_marginTop="62dp"
        android:layout_alignTop="@+id/listView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <ImageButton
        android:text="Button"
        android:id="@+id/button6"
        android:foreground="@android:drawable/ic_input_add"
        android:layout_marginTop="6dp"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_below="@+id/textView3"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:onClick="confirmFireMissles"/>

    <ImageButton
        android:text="Button"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:id="@+id/button7"
        android:layout_below="@+id/button6"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:foreground="@android:drawable/ic_delete" />

    <Button
        android:text="Begin!"
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:id="@+id/button3"
        android:layout_marginBottom="50dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

活动W /显示对话框方法

package com.example.hunte.assassin;

import android.content.Context;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.app.AlertDialog;
import android.app.Dialog;
import android.support.v4.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.List;



public class StartNewGameActivity extends AppCompatActivity {


    private ListView lv;

    public void confirmFireMissiles() {
        DialogFragment newFragment = new CreatePlayerDialogFragment();
        newFragment.show(getSupportFragmentManager(), "missiles");
    }

    ArrayList<Player> players = new ArrayList<Player>();

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


        lv = (ListView) findViewById(R.id.Players);

        // Instanciating an array list (you don't need to do this,
        // you already have yours).
        List<String> game_players = new ArrayList<String>();
        for(int i = 0; i < players.size(); i++){
            game_players.add(players.get(i).name);
        }




        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                this,
                android.R.layout.simple_list_item_1,
                game_players );

        lv.setAdapter(arrayAdapter);
    }


}

这是我认为最合乎逻辑的实现,但是我的XML文件似乎无法识别我的&#34; confirmFireMissles&#34;方法和我的活动文件说我的方法没有使用。很抱歉包含这么多代码我无法确定问题所在。我只是试图让这个工作,所以我可以理解如何显示一个对话框

1 个答案:

答案 0 :(得分:1)

您需要将View作为参数传递给confirmFireMissiles()方法。

public void confirmFireMissiles(View view) {
    DialogFragment newFragment = new CreatePlayerDialogFragment();
    newFragment.show(getSupportFragmentManager(), "missiles");
}