java - fragment 无法转换为上下文

标签 java android xml android-fragments

这是我第一次使用 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() 之外,我还建议您在 中使用 getActivity() onActivityCreated()(因为您还需要先膨胀 View )

@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/

相关文章:

java - 如何在 Android 中更改下划线字体颜色

android - 如何减少Activity的加载时间?

java - 如何在没有引用的情况下找到类的单例对象?

java - Map 方法引用链

java - 隐藏输入在 servlet 中给出 null

java - 错误: No resource found that matches the given name (at 'background' with value '@drawable-mdpi/1.jpg' )

java - 通过 Java 读取 XML、替换文本和写入同一个 XML 文件

Java 双缓冲

java - 在 Intellij 中添加 Maven 依赖

android - Android 上的 Facebook Unity SDK - 安装 FB 应用程序后登录失败