【发布时间】:2014-11-07 16:19:54
【问题描述】:
我正在使用this tutorial 创建一个自定义对话框,当我从微调器中单击“创建新文件夹”时应显示该对话框。我进入 OnItemsSelected 方法,检查“创建新文件夹”选项是否已单击,然后我想显示一个对话框来介绍新文件夹的名称。我是这样做的:
res/layout/dialog.html
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible" >
<EditText
android:id="@+id/editText_dialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:hint="@string/editText_dialog"
android:layout_alignParentTop="true"
android:layout_marginTop="15dip"
android:layout_marginBottom="15dip"/>
<Button
android:id="@+id/button_create_dialog"
android:text="@string/button_create_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/editText_dialog"
android:layout_alignParentLeft="true"
android:layout_marginLeft="50dip"
android:background="#176CEC"
android:textColor="#fff"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<Button
android:id="@+id/button_cancel_dialog"
android:text="@string/button_cancel_dialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/editText_dialog"
android:layout_alignParentRight="true"
android:layout_marginRight="50dip"
android:background="#176CEC"
android:textColor="#fff"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceLarge"/>
</RelativeLayout>
Java 文件
public void onItemSelected(AdapterView<?> parent, View view, int position,long id){
if (parent.getItemAtPosition(position).toString().matches("Create New Folder")){
final Dialog dialog = new Dialog(this);
try {
dialog.setContentView(R.id.dialog);
dialog.setTitle("Create New Folder");
}
catch (Exception e){
StringWriter errors = new StringWriter();
e.printStackTrace(new PrintWriter(errors));
Log.i("Exception", errors.toString());
}
Button createButton = (Button) findViewById(R.id.button_create_dialog);
Button cancelButton = (Button) findViewById(R.id.button_cancel_dialog);
createButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
EditText newFolderName = (EditText) findViewById(R.id.editText_dialog);
String folderName = newFolderName.getText().toString().trim();
if (folderName.length() > 0) {
// do stuff
dialog.dismiss();
}
}
});
cancelButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
dialog.dismiss();
}
});
dialog.show();
}
}
我收到了 ResourceNotFoundException。这是堆栈跟踪:
11-07 17:11:49.075: I/Exception(8315): android.content.res.Resources$NotFoundException: Resource ID #0x7f05000e
11-07 17:11:49.075: I/Exception(8315): at android.content.res.Resources.getValue(Resources.java:1118)
11-07 17:11:49.075: I/Exception(8315): at android.content.res.Resources.loadXmlResourceParser(Resources.java:2304)
11-07 17:11:49.075: I/Exception(8315): at android.content.res.Resources.getLayout(Resources.java:934)
11-07 17:11:49.075: I/Exception(8315): at android.view.LayoutInflater.inflate(LayoutInflater.java:395)
11-07 17:11:49.075: I/Exception(8315): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
11-07 17:11:49.075: I/Exception(8315): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
11-07 17:11:49.075: I/Exception(8315): at android.app.Dialog.setContentView(Dialog.java:471)
11-07 17:11:49.075: I/Exception(8315): at com.example.example.MainActivity.onItemSelected(MainActivity.java:94)
11-07 17:11:49.075: I/Exception(8315): at android.widget.AdapterView.fireOnSelected(AdapterView.java:892)
11-07 17:11:49.075: I/Exception(8315): at android.widget.AdapterView.access$200(AdapterView.java:49)
11-07 17:11:49.075: I/Exception(8315): at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:860)
11-07 17:11:49.075: I/Exception(8315): at android.os.Handler.handleCallback(Handler.java:730)
11-07 17:11:49.075: I/Exception(8315): at android.os.Handler.dispatchMessage(Handler.java:92)
11-07 17:11:49.075: I/Exception(8315): at android.os.Looper.loop(Looper.java:137)
11-07 17:11:49.075: I/Exception(8315): at android.app.ActivityThread.main(ActivityThread.java:5103)
11-07 17:11:49.075: I/Exception(8315): at java.lang.reflect.Method.invokeNative(Native Method)
11-07 17:11:49.075: I/Exception(8315): at java.lang.reflect.Method.invoke(Method.java:525)
11-07 17:11:49.075: I/Exception(8315): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-07 17:11:49.075: I/Exception(8315): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-07 17:11:49.075: I/Exception(8315): at dalvik.system.NativeStart.main(Native Method)
可以想象,资源 ID #0x7f05000e 匹配 R.id.dialog,我已经检查过了:
R.java 内部
public static final int dialog = 0x7f05000e;
知道可能是什么问题吗?
更新 我忘了说在这一行抛出了异常:
dialog.setContentView(R.id.dialog);
【问题讨论】:
标签: android dialog android-resources r.java-file