簡體   English   中英

創建一個新文件夾,該文件夾的名稱由用戶指定

[英]Creating a new folder, where the name of the folder is given by the user

我正在嘗試創建一個應用程序,用戶可以在其中創建新文件夾並將數據保存到其中。 當用戶單擊“添加文件夾”時,將出現一個警告對話框,其中包含一個文本字段,用於從用戶那里獲取文件夾的名稱。
這是我的代碼

 @Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    AlertDialog.Builder builder= new AlertDialog.Builder(getActivity());

    final EditText input = new EditText(getActivity());
    input.setInputType(InputType.TYPE_CLASS_TEXT);
    builder.setView(input);

    LayoutInflater inflater=getActivity().getLayoutInflater();

    View view=inflater.inflate(R.layout.folder_dialog,null);

    builder.setView(view)
            .setTitle("Create New Folder")
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {

                }
            })
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which)
                {
                    String value = input.getText().toString();
                    File ABC=new File("/Simply-File/Pdf",value);
                    if(!ABC.exists())
                    {
                        ABC.mkdir();
                        Toast.makeText(getActivity(),"Folder Created!",Toast.LENGTH_LONG).show();
                    }


                }
            });


    return builder.create();
}

我已經創建了一個父目錄,看起來像這樣

   private void writeExternalStorage()
{
    String state;
    state= Environment.getExternalStorageState();
    if(Environment.MEDIA_MOUNTED.equals(state))
    {

        File root= Environment.getExternalStorageDirectory();
        File Dir=new File(root.getAbsolutePath(),"/Simply-File/Pdf");
        if(!Dir.exists())
        {
            Dir.mkdirs();
        }

    }
    else
    {
        Toast.makeText(getApplicationContext(),"SD card not detected!",Toast.LENGTH_LONG).show();
    }
}

而且我也要求許可

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  

folder_dialog.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">

<EditText
    android:hint="Folder Name"
    android:id="@+id/create_folder"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"/>

問題出在EditText 您正在創建一個新的EditText並在用戶單擊對話框上的OK時將其文本分配給value變量。 value將始終為空字符串,因為此EditText不是Dialog顯示的Dialog 您正在從布局文件中擴展視圖,然后在builder設置該視圖,並且Dialog顯示的EditText將是在XML文件中聲明的視圖。

由於您在folder_dialog.xml布局文件中聲明了帶有android:id="@+id/create_folder"EditText ,因此您應該按ID獲取該視圖,而不是通過編程方式創建新的EditText

這部分代碼:

final EditText input = new EditText(getActivity());
builder.setView(input);
View view=inflater.inflate(R.layout.folder_dialog,null);
builder.setView(view) (...)

應該更改為:

View view = inflater.inflate(R.layout.dialog, null);
final EditText input = view.findViewById(R.id.create_folder);
builder.setView(view) (...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM