0

我是学习安卓的学生。
我只是在测试一些与我的教科书完全相同的代码。
但是....发生了很多错误....
我不知道它们为什么会出现...

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)未定义


如何删除错误?

4

1 回答 1

1

我认为你在创建一个名为的类时犯了一个错误:public class ContextMenu extends Activity

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

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

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

于 2013-07-17T00:43:52.137 回答