特定のリストアイテムを選択するたびにアラートダイアログを表示しようとしていますが、他のアイテムは新しいフラグメントを開きます。しかし、対話ダイアログコードを挿入した後、エラーが返されます。私はなぜ '意図'が既に初期化されているときにこのエラーが出るのか分からない。この問題を解決するには何ができますか?特定のリストアイテムのアラートダイアログを表示する方法
変数 '意図は'
を初期化されていない可能性がありますFragmentFruitChooser
public class FragmentFruitChooser extends ListFragment {
public FragmentFruitChooser() {
// Required empty constructor
}
/**
* Whether or not the activity is in two-pane mode, i.e. running on a tablet
* device.
*/
public boolean mTwoPane;
public static FragmentFruitChooser newInstance() {
return new FragmentFruitChooser();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_fruit_chooser, container, false);
initialize();
return view;
}
List<Fruits> list = new ArrayList<>();
private void initialize() {
String[] items = getActivity().getResources().getStringArray(R.array.fruit_names);
String[] itemDescriptions = getActivity().getResources().getStringArray(R.array.fruit_descriptions);
for (int n = 0; n < items.length; n++){
Fruit fruit = new Fruit();
fruit.setID();
fruit.setName(items[n]);
fruit.setDescription(itemDescriptions[n]);
list.add(fruit);
}
FruitListAdapter mAdapter = new FruitListAdapter(list, getActivity());
setListAdapter(mAdapter);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
View v = getView();
mTwoPane = getActivity().findViewById(R.id.detail_container) != null;
assert v != null;
ListView lv = (ListView)v.findViewById(android.R.id.list);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// get the adapter, then get the name from the adapter at that position
FruitListAdapter adapter = (FruitListAdapter) parent.getAdapter();
//reverse the selected state in data model
for (int i = 0; i < adapter.getCount(); i++) {
Fruit fruit = (Fruit)adapter.getItem(i);
fruit.setSelected(i == position);
}
Fruit fruit = (Fruit)adapter.getItem(position);
if (!mTwoPane) {
Intent intent;
if (fruit.getFruit().equals(view.getResources().getString(R.string.apple))) {
intent = new Intent(getActivity(), FruitAppleActivity.class);
} else if (fruit.getFruit().equals(view.getResources().getString(R.string.orange))) {
intent = new Intent(getActivity(), FruitOrangeActivity.class);
} else if (fruit.getFruit().equals(view.getResources().getString(R.string.tomato))) {
AlertDialog ad = new AlertDialog.Builder(getContext())
.create();
ad.setCancelable(false);
ad.setTitle("Seeded Fruit");
ad.setMessage("This fruit contains seeds.");
ad.setButton(context.getString(R.string.ok_text), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
ad.show();
} else {
intent = new Intent(getActivity(), FruitAppleActivity.class);
}
startActivity(intent);
}
}
});
super.onActivityCreated(savedInstanceState);
}
}
「getSimpleName」とは何ですか? – MacaronLover
単に 'Activity'の名前を取得します。あなたは私が含むログを無視することができます。 –
それは機能しましたか?あなたはそれを修正することができましたか? –