[英]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.