如何解决ContextMenu.ContextMenuInfo无法解析为某个类型?

时间:2013-07-16 20:53:16

标签: android

我是学生学习机器人 我只是测试了一些与我的教科书完全相同的代码 但是......发生了很多错误...... 我不知道他们为什么出现......

activity_context_menu.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<Button android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    />
<EditText android:id="@+id/edittext"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="EditText"
    />
<andexam.ver4_1.c09_munu.MyImage
    android:id="@+id/myimage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_launcher"
    />

我不知道andexam ....
我只是在看书时打字 但我猜错误不包括该部分

package com.example.contextmenu;

import android.app.*;
import android.content.*;
import android.graphics.*;
import android.os.*;
import android.util.*;
import android.view.*;
import android.widget.*;

public class ContextMenu extends Activity {
    Button mBtn;
    EditText mEdit;
    MyImage mImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_context_menu);

        /*
        mBtn=(Button)findViewById(R.id.edittext);
        registerForContextMenu(mEdit);
        */

        registerForContextMenu(mBtn=(Button)findViewById(R.id.button));

        registerForContextMenu(mEdit=(EditText)findViewById(R.id.edittext));

        mImage=(MyImage)findViewById(R.id.myimage);
        registerForContextMenu(mImage);
    }

    public void onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        if(v==mBtn){
            menu.setTitle("Button Menu");
            menu.add(0,1,0,"red");
            menu.add(0,2,0,"green");
            menu.add(0,3,0,"blue");
        }
        if(v==mEdit){
            menu.add(0,4,0,"translation");
            menu.add(0,5,0,"writing");
        }
    }

    public boolean onContextItemSelected(MenuItem item){
        switch(item.getItemId()){
        case 1:
            mBtn.setTextColor(Color.RED);
            return true;
        case 2:
            mBtn.setTextColor(Color.GREEN);
            return true;
        case 3:
            mBtn.setTextColor(Color.BLUE);
            return true;
        case 4:
            Toast.makeText(this,"translated",Toast.LENGTH_SHORT).show();
            return true;
        case 5:
            Toast.makeText(this,"wrote",Toast.LENGTH_SHORT).show();
            return true;
        case 100:
            Toast.makeText(this,"rotated",Toast.LENGTH_SHORT).show();
            return true;
        case 101:
            Toast.makeText(this,"resized",Toast.LENGTH_SHORT).show();
            return true;
        }
        return true;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.context_menu, menu);
        return true;
    }

}
class MyImage extends ImageView {
    public MyImage(Context context){
        super(context);
    }
    public MyImage(Context context, AttributeSet attrs){
        super(context, attrs);
    }
    public void onCreateContextMenu(ContextMenu menu){
        super.onCreateContextMenu(menu);

        menu.setTitle("MyImage Menu");
        menu.add(0,100,0,"image rotate");
        menu.add(0,101,0,"change image size");
    }
}

ContextMenu.ContextMenuInfo 无法解析为类型
对于ContextMenu类型,方法 add(int,int,int,String)未定义

我该如何删除错误?

1 个答案:

答案 0 :(得分:1)

我认为你在创建一个叫做的类时犯了一个错误:     公共类 ContextMenu 扩展了活动

因为您使用的是现有类的相同名称:      android.view.ContextMenu

编译器无法区分您的类现有的

可能的解决方案:尝试将您的类重命名(例如使用重构)类似MyContextMenu。