簡體   English   中英

onCreateOptionMenu android問題

[英]onCreateOptionMenu android Issue

這是通常的活動。 問題出在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());
        }

    }

}

如果您找到解決方案,請提供幫助。

您拼錯了方法名稱-應該是onCreateOptionsMenu() ,而不是onCreateOptionMenu() 最好使用@Override注釋來避免此類錯誤:

@Override   
public boolean onCreateOptionsMenu(Menu menu) {

這樣,如果您拼寫錯誤的方法名稱或使用了錯誤的參數,它將給您編譯時錯誤。

將您的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;
}

現在應該可以工作了!

嘗試將@Override添加到公共布爾onCreateOptionMenu
並且您嘗試使用MenuInflater並從xml擴展菜單嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM