0

我正在努力实现这个结果:

在 ImageButton 单击时,会显示一个 AlertDialog(或可能是另一个用于弹出背景变暗的功能),允许将 5 个其他小图像设置为所述按钮的背景。onClick 所选图像的 AlertDialog 或弹出窗口消失,新图像设置为 ImageButton 背景。

到目前为止,我有这段代码,我知道的不多,但由于某种原因,我无法进一步了解我所遇到的错误:

package com.test.test;

import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;

public class PageTwoFragment extends Fragment {

    int i = 0;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup) inflater.inflate(
        R.layout.page2_layout, container, false);

final ImageButton pp_btn1 = (ImageButton) rootView.findViewById(R.id.m1_btn);
final ImageButton m1_ts_btn = (ImageButton) rootView.findViewById(R.id.m1_ts_btn);
final Context context = this;

pp_btn1.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        i +=1;
        if (i % 2 == 0) {
            pp_btn1.setImageResource(R.drawable.pause);
        } else {
            pp_btn1.setImageResource(R.drawable.play);
        }
    }
});

    m1_ts_btn.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

        alertDialogBuilder.setTitle("My Title");

    }
});

return rootView;

}
}

错误 1:final Context context = this;

上面写着“类型不匹配:无法从 PageTwoFragment 转换为 Context

错误 2:new AlertDialog.Builder(this);

上面写着“构造函数 AlertDialog.Builder(new View.OnClickListener(){}) 未定义”。

任何人都可以解释我哪里出错了,然后直接指出我如何实现我需要的东西吗?

4

1 回答 1

1

第一个错误是关于“final Context context = this;” 上面写着“类型不匹配:无法从 PageTwoFragment 转换为 Context”

Fragment 不是 Context 的子类。活动是。获取 Fragment 附加到的 Activity:

final Context context = getActivity();

第二个错误是关于“new AlertDialog.Builder(this);” 上面写着“构造函数 AlertDialog.Builder(new View.OnClickListener(){}) 未定义”。

在此处使用先前设置的上下文:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
于 2013-09-07T11:19:12.287 回答