这是我第一次使用 fragment (对 android 开发来说是新手),我正在尝试设置一个微调器。目前我对上下文很困惑,似乎无法解决这个错误:
Error:(52, 78) error: incompatible types: HotkeysFragment cannot be converted to Context
这里是它引用的代码:
热键 fragment .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;
我该如何解决这个问题?
最佳答案
来自 here 中有关 Fragments 的 Android 文档:
Caution: If you need a Context object within your Fragment, you can call getActivity(). However, be careful to call getActivity() only when the fragment is attached to an activity. When the fragment is not yet attached, or was detached during the end of its lifecycle, getActivity() will return null.
因此,除了将 this
更改为 getActivity()
之外,我还建议您在 中使用
(因为您还需要先膨胀 View )getActivity()
onActivityCreated()
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
Spinner hotkey_selector_spinner = (Spinner) getView().findViewById(R.id.hotkey_selector_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(),
R.array.hotkey_options, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
hotkey_selector_spinner.setAdapter(adapter);
}
关于java - fragment 无法转换为上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31966406/