Java 对话框标题在Android中不显示

Java 对话框标题在Android中不显示,java,android,xml,android-studio,dialog,Java,Android,Xml,Android Studio,Dialog,我正在尝试创建一个对话框。所有项目都会出现,并对触摸做出响应,但标题不会出现。我检查了其他答案,他们建议在xml中将“windowNoTitle”设置为“false”,但这没有帮助。在构建对话框后尝试“setTitle”也没有成功(现在就是这样编写的)。为什么我的标题没有出现 以下是MainActivity的代码: package samapps.myfirstapp; import android.os.Bundle; import android.support.v4.app.Dialog

我正在尝试创建一个对话框。所有项目都会出现,并对触摸做出响应,但标题不会出现。我检查了其他答案,他们建议在xml中将“windowNoTitle”设置为“false”,但这没有帮助。在构建对话框后尝试“setTitle”也没有成功(现在就是这样编写的)。为什么我的标题没有出现

以下是MainActivity的代码:

package samapps.myfirstapp;

import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;

public class MainActivity extends AppCompatActivity implements DialogTest.OnFragmentInteractionListener{

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

    @Override
    public void onButtonClick(int result){
        Log.d("tag","Executed on click");
    }

    //Called when the Send button is tapped
    public void sendMessage(View view){
       String[] text = {"Test 1","Test 2","Test 3"};
        String title = "Test Title";
        DialogFragment fragment = new DialogTest();
        Bundle args = new Bundle();
        args.putString("title_question",title);
        args.putStringArray("choices",text);
        fragment.setArguments(args);
        fragment.show(getSupportFragmentManager(),"testtest123");
        Log.d("tag","Executed after dialog");
}
}

和对话框片段:

package samapps.myfirstapp;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;



public class DialogTest extends DialogFragment {
    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    private OnFragmentInteractionListener mListener;

    public DialogTest() {
        // Required empty public constructor
    }

    public interface OnFragmentInteractionListener {
        public void onButtonClick(int result);
    }



    @Override
    public Dialog onCreateDialog (Bundle savedInstanceState){
        Bundle theBundle = this.getArguments();

        String[] choices = theBundle.getStringArray("choices");
        String choiceTitle = theBundle.getString("choice_title");

        AlertDialog.Builder builder;
        if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            builder = new AlertDialog.Builder(getActivity(),android.R.style.Theme_Material_Dialog_Alert);
        } else {
            builder = new AlertDialog.Builder(getActivity().getParent());
        }
        builder.setTitle(choiceTitle);

        builder.setItems(choices,new DialogInterface.OnClickListener(){
            public void onClick(DialogInterface dialog,int which){
                mListener.onButtonClick(which);
            }
        });

        Dialog thisDialog = builder.create();
        thisDialog.setTitle(choiceTitle);
        return thisDialog;
    }


    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof OnFragmentInteractionListener) {
            mListener = (OnFragmentInteractionListener) context;
        } else {
            throw new RuntimeException(context.toString()
                    + " must implement OnFragmentInteractionListener");
        }
    }

}
值得一提的是,这里是fragment_dialog_test.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="samapps.myfirstapp.DialogTest"
    android:windowNoTitle="false"
    style="@style/CustomDialog">

    <!-- TODO: Update blank fragment layout -->
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_blank_fragment" />

</FrameLayout>

在“Styles.xml”中使用


假的

这可能是因为您正在使用“title\u question”键设置标题,但希望在对话框中使用“choice\u title”键设置标题

试着换成

 public void sendMessage(View view){
       String[] text = {"Test 1","Test 2","Test 3"};
        String title = "Test Title";
        DialogFragment fragment = new DialogTest();
        Bundle args = new Bundle();
        args.putString("title_question",title);
        args.putStringArray("choices",text);
        fragment.setArguments(args);
        fragment.show(getSupportFragmentManager(),"testtest123");
        Log.d("tag","Executed after dialog");

这可能是因为您正在使用“title\u question”键设置标题,但希望在对话框中使用“choice\u title”键设置标题

试着换成

 public void sendMessage(View view){
       String[] text = {"Test 1","Test 2","Test 3"};
        String title = "Test Title";
        DialogFragment fragment = new DialogTest();
        Bundle args = new Bundle();
        args.putString("title_question",title);
        args.putStringArray("choices",text);
        fragment.setArguments(args);
        fragment.show(getSupportFragmentManager(),"testtest123");
        Log.d("tag","Executed after dialog");

对话框fragment
中,您使用了错误的
键来获取bundle.getString(“choice\u title”)
。尝试使用
标题\u问题

使用:

@Override
public Dialog onCreateDialog (Bundle savedInstanceState){
    Bundle theBundle = this.getArguments();

    String[] choices = theBundle.getStringArray("choices");
    String choiceTitle = theBundle.getString("title_question");
    ...........
}

对话框fragment
中,您使用了错误的
键来获取bundle.getString(“choice\u title”)
。尝试使用
标题\u问题

使用:

@Override
public Dialog onCreateDialog (Bundle savedInstanceState){
    Bundle theBundle = this.getArguments();

    String[] choices = theBundle.getStringArray("choices");
    String choiceTitle = theBundle.getString("title_question");
    ...........
}