如何在android中创建一个简单的保存文件名对话框?

如何在android中创建一个简单的保存文件名对话框?,android,dialog,fragment,Android,Dialog,Fragment,我正在尝试创建一个简单的android应用程序进行练习。这个应用程序是一个简单的记事本,有一个主要的活动,写作活动和阅读活动。 主活动显示“写”和“读”两个按钮,分别变为写活动和读活动。 现在我正在努力发展写作活动。 书写活动显示一个用于注释输入的编辑文本和一个保存按钮。 单击“保存”按钮后,我希望它显示一个对话框,其中一个editText用于文件名输入,两个按钮“保存”,用于保存文件并返回主活动,“取消”用于返回写入活动。 我的代码可以转换为readingactivity和writingact

我正在尝试创建一个简单的android应用程序进行练习。这个应用程序是一个简单的记事本,有一个主要的活动,写作活动和阅读活动。 主活动显示“写”和“读”两个按钮,分别变为写活动和读活动。 现在我正在努力发展写作活动。 书写活动显示一个用于注释输入的编辑文本和一个保存按钮。 单击“保存”按钮后,我希望它显示一个对话框,其中一个editText用于文件名输入,两个按钮“保存”,用于保存文件并返回主活动,“取消”用于返回写入活动。 我的代码可以转换为readingactivity和writingactivity,但writingactivity中的对话框不起作用。 你能帮助我吗? 我试过使用下面的代码 最佳管理者

写作活动课

public class WritingActivity extends AppCompatActivity {

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

//method onclick save button xml file
public void metodoSalva(View view) {

    SaveDialogFragment DialogFSave = new SaveDialogFragment();
    DialogFSave.show(getSupportFragmentManager(), "NoticeDialogFragment");

    Context context = getApplicationContext();

    EditText editText = (EditText) findViewById(R.id.filename_editText);
    String filename = new String(editText.getText().toString() + ".txt");

    File mydir = context.getFilesDir(); //crea una directory privata per l'app in questione nella memoria interna
    File file = new File(mydir, filename); //crea il file nella cartella "mydir" di nome "filename"

    editText = (EditText) findViewById(R.id.write_note);
    String mia_nota = editText.getText().toString();


    FileOutputStream outputStream;

    try {
        outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
        outputStream.write(mia_nota.getBytes());
        outputStream.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    finish(); //torna nella main activity terminando l'activity corrente
}

}
对话类

public class SaveDialogFragment extends DialogFragment {


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

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    LayoutInflater inflater = getActivity().getLayoutInflater();


    builder.setView(inflater.inflate(R.layout.fragment_save_dialog, null))

            .setPositiveButton(R.string.button_save, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {

                }
            })
            .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {

                }
            });
    return builder.create();
}

}
fragment_save_dialog.xml文件

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:context="com.html.utente.jammanote.SaveDialogFragment">


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/menu_fragment" />

<EditText
    android:id="@+id/filename_editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:layout_marginBottom="4dp"
    android:hint="@string/message_insert" />

</FrameLayout>

你的应用程序崩溃了吗?如果是,请添加日志。是。我的应用程序已停止。我在哪里可以找到我的日志?我使用genymotion和我的三星galaxy s5 neo测试appHi,我用LogFile升级问题在应用程序崩溃后添加日志。它应该会显示错误发生的位置(类名和行号)。您好,我再次用日志文件升级了这个问题
03-14 15:19:23.755 15636-15636/com.html.utente.jammanote E/AndroidRuntime: FATAL EXCEPTION: main
                                                                       java.lang.IllegalStateException: Could not execute method of the activity
                                                                           at android.view.View$1.onClick(View.java:3591)
                                                                           at android.view.View.performClick(View.java:4084)
                                                                           at android.view.View$PerformClick.run(View.java:16966)
                                                                           at android.os.Handler.handleCallback(Handler.java:615)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:92)
                                                                           at android.os.Looper.loop(Looper.java:137)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:4745)
                                                                           at java.lang.reflect.Method.invokeNative(Native Method)
                                                                           at java.lang.reflect.Method.invoke(Method.java:511)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
                                                                           at dalvik.system.NativeStart.main(Native Method)
                                                                        Caused by: java.lang.reflect.InvocationTargetException
                                                                           at java.lang.reflect.Method.invokeNative(Native Method)
                                                                           at java.lang.reflect.Method.invoke(Method.java:511)
                                                                           at android.view.View$1.onClick(View.java:3586)
                                                                           at android.view.View.performClick(View.java:4084) 
                                                                           at android.view.View$PerformClick.run(View.java:16966) 
                                                                           at android.os.Handler.handleCallback(Handler.java:615) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:92) 
                                                                           at android.os.Looper.loop(Looper.java:137) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:4745) 
                                                                           at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                           at java.lang.reflect.Method.invoke(Method.java:511) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                                           at dalvik.system.NativeStart.main(Native Method) 
                                                                        Caused by: java.lang.NullPointerException
                                                                           at com.html.utente.jammanote.WritingActivity.metodoSalva(WritingActivity.java:29)
                                                                           at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                           at java.lang.reflect.Method.invoke(Method.java:511) 
                                                                           at android.view.View$1.onClick(View.java:3586) 
                                                                           at android.view.View.performClick(View.java:4084) 
                                                                           at android.view.View$PerformClick.run(View.java:16966) 
                                                                           at android.os.Handler.handleCallback(Handler.java:615) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:92) 
                                                                           at android.os.Looper.loop(Looper.java:137) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:4745) 
                                                                           at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                           at java.lang.reflect.Method.invoke(Method.java:511) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                                                                           at dalvik.system.NativeStart.main(Native Method)