为什么我的 "about" 标签在 R 中无法识别
Why isnt my "about" tag recognised in R
我正在尝试使用本教程 http://javatechig.com/android/android-dialog-fragment-example 为我为自己的教育目的创建的应用程序实现一个对话框。
在我的 notepadlistactivity.java 部分,
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.addNote:
openNote(new Note(noteManager));
break;
case android.R.id.home:
break;
case android.R.id.about:
FragmentManager fm = getFragmentManager();
MyDialogFragment dialogFragment = new MyDialogFragment ();
dialogFragment.show(fm, "Sample Fragment");
default:
return false;
}
return true;
}
对于所有其他 R.id..,它识别点后的单词,但对于 R.id.about,about 无法识别。我已经检查了 R 文件并且定义了 about 所以我不明白出了什么问题。
供您参考,这是我的 MyDialogFragment.java,
package com.nicae.Notepad.note_list;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.nicae.Notepad.R;
public class MyDialogFragment extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_sample_dialog, container, false);
getDialog().setTitle("Simple Dialog");
return rootView;
Button dismiss = (Button) rootView.findViewById(R.id.dismiss);
dismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
}
这是我的 fragment_sample_dialog.xml,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:padding="10dp"
android:orientation="vertical"
android:id="@+id/about">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lorem ipsum dolor sit amet..."
android:textSize="20dp" />
<Button
android:id="@+id/dismiss"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Dismiss" />
</LinearLayout>
编辑对应以下评论:
这是我的 activity_notepad_list.xml,
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/addNote"
android:title="@string/newNote"
android:orderInCategory="1"
app:showAsAction="always"
android:icon="@drawable/content_new"/>
<item
android:id="@+id/about"
android:title="About"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_ab_other"
android:orderInCategory="2"/>
</menu>
请注意,android.R.id
与 R.id
不同,具体取决于当前 class 是 and/or import
语句的当前包名称。 android.R.id
指的是 Android API 中的标准值。您可能打算改用 R.id
。
这是因为您对 LinearLayout 和菜单项使用了相同的 ID。从 LinearLayout 中删除 android:id="@+id/about"
(或将其更改为 "@+id/aboutLayout"
)。
并使用,
case R.id.about: // instead of android.R.id.about
FragmentManager fm = getFragmentManager();
MyDialogFragment dialogFragment = new MyDialogFragment ();
dialogFragment.show(fm, "Sample Fragment");
我正在尝试使用本教程 http://javatechig.com/android/android-dialog-fragment-example 为我为自己的教育目的创建的应用程序实现一个对话框。
在我的 notepadlistactivity.java 部分,
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.addNote:
openNote(new Note(noteManager));
break;
case android.R.id.home:
break;
case android.R.id.about:
FragmentManager fm = getFragmentManager();
MyDialogFragment dialogFragment = new MyDialogFragment ();
dialogFragment.show(fm, "Sample Fragment");
default:
return false;
}
return true;
}
对于所有其他 R.id..,它识别点后的单词,但对于 R.id.about,about 无法识别。我已经检查了 R 文件并且定义了 about 所以我不明白出了什么问题。
供您参考,这是我的 MyDialogFragment.java,
package com.nicae.Notepad.note_list;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.nicae.Notepad.R;
public class MyDialogFragment extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_sample_dialog, container, false);
getDialog().setTitle("Simple Dialog");
return rootView;
Button dismiss = (Button) rootView.findViewById(R.id.dismiss);
dismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
}
这是我的 fragment_sample_dialog.xml,
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:padding="10dp"
android:orientation="vertical"
android:id="@+id/about">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Lorem ipsum dolor sit amet..."
android:textSize="20dp" />
<Button
android:id="@+id/dismiss"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Dismiss" />
</LinearLayout>
编辑对应以下评论:
这是我的 activity_notepad_list.xml,
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/addNote"
android:title="@string/newNote"
android:orderInCategory="1"
app:showAsAction="always"
android:icon="@drawable/content_new"/>
<item
android:id="@+id/about"
android:title="About"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_ab_other"
android:orderInCategory="2"/>
</menu>
请注意,android.R.id
与 R.id
不同,具体取决于当前 class 是 and/or import
语句的当前包名称。 android.R.id
指的是 Android API 中的标准值。您可能打算改用 R.id
。
这是因为您对 LinearLayout 和菜单项使用了相同的 ID。从 LinearLayout 中删除 android:id="@+id/about"
(或将其更改为 "@+id/aboutLayout"
)。
并使用,
case R.id.about: // instead of android.R.id.about
FragmentManager fm = getFragmentManager();
MyDialogFragment dialogFragment = new MyDialogFragment ();
dialogFragment.show(fm, "Sample Fragment");