gpt4 book ai didi

java - LayoutInflater : No output is displayed, 中出现问题并且应用程序崩溃

转载 作者:行者123 更新时间:2023-12-01 06:17:43 25 4
gpt4 key购买 nike

在我的应用程序中,我创建了一个文件夹并向其中写入文本文件。现在,我需要展示它们。以下是 Java 代码,主要操作从这里开始。

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。模拟器中没有问题。

上面的对话框是在另一个布局的帮助下创建的。在这里。

open_dialog.xml

<?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>

正如您在 Java 代码中看到的,open_dialog.xml 中的空间被另一个 View 填充,它代表文件名和 2 个按钮。它是通过“Here it is”激活的。

open_dialog_file.xml

<?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 消息。

那么这里的问题是什么?

最佳答案

问题不在于 IO。它的布局正在膨胀。在模拟器中它没有出现,因为没有要显示的数据,所以没有膨胀。我发现问题出在 LayoutInflater 或与之相关的其他问题上,因为我设法获取文件夹列表并将其显示在 Toast 中,而不显示在任何外部 View 中。

关于java - LayoutInflater : No output is displayed, 中出现问题并且应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com