【发布时间】:2015-11-05 03:11:18
【问题描述】:
这是我第一次使用片段(android 开发新手),我正在尝试设置一个微调器。目前我对上下文很困惑,似乎无法解决这个错误:
Error:(52, 78) error: incompatible types: HotkeysFragment cannot be converted to Context
这是它引用的代码:
HotkeysFragment.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
Spinner hotkey_selector_spinner = (Spinner) rootView.findViewById(R.id.hotkey_selector_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.hotkey_options, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
hotkey_selector_spinner.setAdapter(adapter);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootViewB = inflater.inflate(R.layout.fragment_hotkeys, container, false);
rootView = rootViewB;
return rootViewB;
}
具体行是:
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.hotkey_options, android.R.layout.simple_spinner_item);
进口:
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import java.util.zip.Inflater;
我该如何解决这个问题?
【问题讨论】:
-
将
this更改为getActivity() -
如果是Fragment,为什么
onCreate中的代码?查看片段生命周期并获取片段中的上下文使用getActivity()。hotkey_selector_spinner将为 null 导致 NPE -
那么如果它不应该在onCreate中,那么它应该在onCreateView中吗?目前应用程序崩溃,这是为什么?
-
@mtmeyer 我建议查看片段文档,尤其是生命周期部分
-
@Raghunandan 因此,在阅读了生命周期之后,似乎使用
onActivityCreated会更好。这是正确的吗?
标签: java android xml android-fragments