当前位置: 首页 > 面试题库 >

片段无法转换为上下文

宇文飞羽
2023-03-14
问题内容

这是我第一次使用片段(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;

我怎样才能解决这个问题?


问题答案:

来自Fragments的Android文档,来自此处:

警告:如果您在Fragment中需要一个Context对象,则可以调用getActivity()。但是,只有在将片段附加到活动时,才应小心调用getActivity()。如果片段尚未附加或在其生命周期结束时分离,则getActivity()将返回null。

因此,除了更改thisgetActivity(),我还建议您使用getActivity()in
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);
}


 类似资料:
  • 我正在尝试创建一个基本的谷歌地图android应用程序。就在我创建项目并获得API密钥之后,我就收到了这个错误。 “错误:不兼容类型:片段无法转换为SupportMapFragment” 行:SupportMapFragment mapFragment=(SupportMapFragment)getSupportFragmentManager().findFragmentByID(r.id.map

  • 问题内容: 我想知道为什么你不能做: 我发现这将需要运行时在片上执行循环以转换每个元素,这将是非惯用的Go。这很有道理。 然而,这可能不会被刚刚走样编译器解决的,所以在内部它们是相同的,他们使用相同类型的头底下?我猜答案虽然不是我好奇为什么。 问题答案: 这个: 是类型转换。根据规范,转换具有特定的规则: 在以下任何一种情况下,可以将非恒定值转换为类型: 是分配给。 的类型,并且具有相同的基础类型

  • 我正在开发一个包含一个活动和多个片段的android应用程序。我的应用程序包含导航抽屉。它的布局包含listview。单击它的项目,我用ft.replace(R.id.my\u placehodler,new MyFragment())动态更改片段,并将事务添加到。当我每次实例化新片段时都进行新事务。在我看来,这不是一个好办法。你能给我一些关于进行片段事务的正确方法的建议吗?

  • 问题内容: 您好,我试图在一个片段中创建地图,我按照一个在线教程进行操作,该教程旨在使它处于活动状态并且我遇到问题。我到处都看过,找不到解决方案。 当我尝试在android studio中进行编译时,它在地图中给我一个错误“初始化行错误: 错误发生在: 线: 我将导入从更改为后 (由于其他应用程序错误我必须保留此导入)后发生了此问题 这是我的片段代码: 问题答案: 我从导入android.supp

  • 我试图创建一个动态表单布局,当我构建我的项目时,我在代码的第37行得到以下错误“错误:不兼容的类型:NewSubscription不能转换为上下文”。是不是因为这是片段,不是Java课?如何解决此错误? NewSubscription.java fragment_new_subscription.xml

  • 问题内容: 我有一个关于片段中上下文使用情况的问题。我的问题是,我总是收到NullpointerException。这是我的工作: 创建一个扩展SherlockFragment的类。在该类中,我有另一个Helper类的实例: 这是其他Helper类的摘录: 每次调用时(例如context.getResources()),我都会收到NullPointerException。这是为什么? 问题答案: