onCreateOptionsMenu android问题

时间:2011-11-29 19:09:18

标签: java android

这是通常的活动。问题出在onCreateOptionMenu上。当我单击菜单按钮时,没有任何操作。我不知道问题出在哪里。

我也尝试在没有菜单的情况下评论所有代码,但它仍然无效。 这是一个非常奇怪的问题,或者我没有看到一些简单的事情。

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.app.Activity;
    import android.content.Intent;
    import android.content.res.AssetManager;
    import android.os.Bundle;
    import android.os.Environment;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.Window;
    import android.widget.LinearLayout;
public class Izu4aikaActivity extends Activity implements OnClickListener {

    public final int INFO = 101;
    public final int BLOCK = 102;
    public final int CLOSE = 103;
    final String sdDir = Environment.getExternalStorageDirectory()+"/izuchaika/";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

        // Thread to write files to SD

        final String file = "Files"; 
        File dir = new File(sdDir);
        dir.mkdir();
        dir.mkdirs();

        new Thread(new Runnable() {
            public void run() {
                copyFileOrDir(file);
            }
        }).start();

        LinearLayout ll = (LinearLayout) findViewById(R.id.main_layout);
        ll.setOnClickListener(this);
    }

    //Menu
    public boolean onCreateOptionMenu(Menu menu) {
        menu.add(Menu.NONE, INFO, Menu.NONE, "О программе").setIcon(
                R.drawable.info);
        menu.add(Menu.NONE, BLOCK, Menu.NONE, "Блокировать").setIcon(
                R.drawable.block);
        menu.add(Menu.NONE, CLOSE, Menu.NONE, "Выход").setIcon(R.drawable.exit);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public void onClick(View v) {
        Intent i = new Intent(this, mScr.class);
        startActivity(i);
    }

    private void copyFileOrDir(String path) {
        AssetManager assetManager = this.getAssets();
        String assets[] = null;
        try {
            assets = assetManager.list(path);
            if (assets.length == 0) {
                copyFile(path);
            } else {
                String fullPath = sdDir + path;
                File dir = new File(fullPath);
                if (!dir.exists())
                    dir.mkdir();
                for (int i = 0; i < assets.length; ++i) {
                    copyFileOrDir(path + "/" + assets[i]);
                }
            }
        } catch (IOException ex) {
            Log.e("tag", "I/O Exception", ex);
        }
    }

    private void copyFile(String filename) {
        AssetManager assetManager = this.getAssets();

        InputStream in = null;
        OutputStream out = null;
        try {
            in = assetManager.open(filename);
            String newFileName = sdDir + filename;
            out = new FileOutputStream(newFileName);

            byte[] buffer = new byte[1024];
            int read;
            while ((read = in.read(buffer)) != -1) {
                out.write(buffer, 0, read);
            }
            in.close();
            in = null;
            out.flush();
            out.close();
            out = null;
        } catch (Exception e) {
            Log.e("tag", e.getMessage());
        }

    }

}

如果您看到解决方案,请提供帮助。

3 个答案:

答案 0 :(得分:4)

您的方法名称拼错了 - 它应该是onCreateOptionsMenu(),而不是onCreateOptionMenu()。 最好使用@Override注释来避免这样的错误:

@Override   
public boolean onCreateOptionsMenu(Menu menu) {

这样,如果拼错方法名称或使用错误的参数,它会给你编译时错误。

答案 1 :(得分:1)

将您的onCreateOptionsMenu更改为:

//Menu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(Menu.NONE, INFO, Menu.NONE, "О программе").setIcon(
            R.drawable.info);
    menu.add(Menu.NONE, BLOCK, Menu.NONE, "Блокировать").setIcon(
            R.drawable.block);
    menu.add(Menu.NONE, CLOSE, Menu.NONE, "Выход").setIcon(R.drawable.exit);
    return true;
}

现在应该可以使用了!

答案 2 :(得分:0)

尝试添加 @Override to public boolean onCreateOptionMenu
您是否尝试使用MenuInflater并从xml中充气菜单?