القضية في التخطيط في وقت لاحق:يتم عرض أي إخراج ، وتعطل التطبيق
-
21-12-2019 - |
سؤال
في طلبي ، لقد خلق مجلد وكتب ملفات نصية في ذلك.الآن ، أنا بحاجة لعرضها.فيما يلي رمز جافا ، حيث تبدأ العملية الرئيسية.
private class OpenFileEvent implements OnClickListener
{
@Override
public void onClick(View arg0) {
LinearLayout openFileDialogView = (LinearLayout)findViewById(R.id.open_file_dialog);
// TODO Auto-generated method stub
final Dialog openFileDialog = new Dialog(Notes.this);
openFileDialog.setTitle("Open File");
openFileDialog.setContentView(R.layout.open_dialog);
//First, list all the available Files
File folder = new File(Environment.getExternalStorageDirectory()+"/Main Notes/Notes/");
File file = new File(folder.getAbsolutePath());
File[] fileNameList = file.listFiles();
try
{
if(fileNameList != null && fileNameList.length>0)
{
for(int i=0;i<fileNameList.length;i++)
{
//Get the sub views first
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View openThisFileView = inflater.inflate(R.layout.open_dialog_file, null);
Button openThisFileButton = (Button)openThisFileView.findViewById(R.id.open_this_file_button);
Button appendThisFileButton = (Button)openThisFileView.findViewById(R.id.append_note_this_file);
TextView openThisFileNameTxt = (TextView)openThisFileView.findViewById(R.id.open_this_file_name);
//Set the Text
openThisFileNameTxt.setText(fileNameList[i].getName());
//Set the Listeners
//Add the View
openFileDialogView.addView(openThisFileView);
}
}
}
catch(Exception e)
{
Toast.makeText(VoiceNotes.this, "The Error is: "+e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
}
//Show the Dialog
openFileDialog.show();
}
}
هنا, ال try..catch
مطلوب لتشغيل في الجهاز.بدونها ، يتعطل التطبيق ببساطة.المحاكي لا تحتاج إليها.في الجهاز الحقيقي ، رسالة الخطأ هي The Error is: null
.لا توجد مشاكل في المحاكي.
يتم إنشاء الحوار أعلاه مع مساعدة من تخطيط آخر.ها هو.
فتح الحوار.شمل
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/open_file_dialog"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffffff">
</LinearLayout>
كما ترون في رمز جافا ، والفضاء في open_dialog.xml
شغل من قبل وجهة نظر أخرى ، والتي تمثل اسم الملف و 2 أزرار.هو واحد التي تحصل على تفعيلها من هنا هو عليه.
فتح ملف الحوار.شمل
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/open_dialog_file_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:orientation="horizontal" >
<TextView
android:id="@+id/open_this_file_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:padding="5dp"
android:text="TextView" />
<Button
android:id="@+id/append_note_this_file"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/open_this_file_button"
android:text="@string/append_note" />
<Button
android:id="@+id/open_this_file_button"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:text="@string/open" />
</RelativeLayout>
لذا سؤالي هو, لماذا هذا لا يعمل في جهاز حقيقي?قبل أن أنشر هذا الرمز ، اختبرت ما إذا كان المجلد الذي يبحث عنه هذا الرمز موجودا أم لا ، وكما خمنت ، فهو موجود.
في الجهاز الحقيقي ، عندما أستخدم try catch
, ، يتم عرض مربع الحوار الذي يحتوي على العنوان فقط.لكن الحوار فارغ.بصرف النظر عن ذلك ، فإن الناتج الآخر الوحيد هو Toast
رسالة.
فما هي القضية هنا?
المحلول
القضية ليست مع إو.هذا هو الحال مع تخطيط تضخيم.في المحاكي لم يأت لأنه لا توجد بيانات ليتم عرضها ، لذلك لا تضخيم.لقد وجدت المشكلة مع LayoutInflater
أو شيء متعلق بذلك ، لأنني تمكنت من الحصول على قائمة المجلدات وعرضها في نخب دون عرض في أي عرض خارجي.
نصائح أخرى
هل وضعت إذن الكتابة الخارجية في أندرويدمانيفست.شمل:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />