Я использую this tutorial для создания настраиваемого диалогового окна, которое должно отображаться при нажатии кнопки «Создать новую папку» из счетчика. Я попал внутрь метода OnItemsSelected, я установил опцию «Создать новую папку», а затем я хочу показать диалог, чтобы ввести имя новой папки. Я делаю это так:Пользовательский диалог, setContentView throws ResourceNotFoundException
Рез/макет/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. Это StackTrace:
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;
Любая идея, в чем проблема?
UPDATE Я забыл сказать, что исключение в этой строке:
dialog.setContentView(R.id.dialog);
Я ценю ваш ответ, потому что я уверен, что столкнулся бы с этой проблемой позже. Я собираюсь отредактировать/обновить свой вопрос, я забыл сказать, что получил исключение в строке «dialog.setContentView (R.id.dialog)»; – Fernando
Спасибо :) Я думаю, это должно быть R.layout.dialog –
О, мальчик, иногда я чувствую себя смущенным из-за тех вопросов, которые я задаю. Ну, я всегда могу сказать, что я молод и все еще небрежен: S – Fernando