将Activity转换为AppCompatActivity时,为什么没有menu.main,如何替换它?

时间:2017-07-18 05:52:37

标签: javascript android-activity android-menu appcompatactivity

我是Android开发的新手。我正在学习教程https://www.youtube.com/watch?v=5sEeprYnHa8,并希望使用AppCompatActivity而不是旧的Activity。我想膨胀菜单,虽然我不知道为什么菜单不会自动出现在res文件夹中。它无法解析符号menu_main.xml在这种情况下我到底应该做什么?到底是怎么回事?感谢。

package com.example.android.cameraattempt;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.VideoView;

public class MainActivity extends AppCompatActivity {

private Button mRecordView, mPlayView;
private VideoView mVideoView;
private int ACTIVITY_START_CAMERA_APP = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mRecordView = (Button)findViewById(R.id.PlayButton);
    mPlayView = (Button)findViewById(R.id.RecordButton);
    mVideoView = (VideoView)findViewById(R.id.videoView2);
    mRecordView.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            Intent callAppVideoIntent = new Intent();
            callAppVideoIntent.setAction(MediaStore.ACTION_VIDEO_CAPTURE);
            startActivityForResult(callAppVideoIntent, ACTIVITY_START_CAMERA_APP );
        }
    });
    mPlayView.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            mVideoView.start();
        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data){
    if(requestCode == ACTIVITY_START_CAMERA_APP && resultCode == RESULT_OK){
        Uri videoURI = data.getData();
        mVideoView.setVideoURI(videoURI);
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu){
    getMenuInflater().inflate(R.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item){
    int id = item.getItemId();
    int action_settings = 0;
    if(id == action_settings){
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}

1 个答案:

答案 0 :(得分:0)

  1. 菜单直接不会出现,因为现在Android Studio没有创建菜单。在视频中,请参阅01:32秒指定菜单资源的规定。 https://youtu.be/5sEeprYnHa8?t=92。此选项目前不在新工作室中。

  2. 对于您无法解析符号menu_main.xml"的问题,我希望您的项目中已存在menu_main.xml文件。

    • 如果文件menu_main.xml已存在。

      1. 在" res"下创建一个文件夹。名称"菜单"。
      2. 放置" menu_main.xml"在"菜单中#34;文件夹创建。
      3. 在你的java代码

        @Override
        public boolean onCreateOptionsMenu(Menu menu){
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
        
    • 如果文件menu_main.xml不存在。

      1. 在" res"下创建一个文件夹。名称"菜单"。
      2. 创建一个文件" menu_main.xml"在"菜单中#34;文件夹创建。
      3. 放在menu_main.xml里面的xml代码下面(如果需要可以修改) <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/about" android:title="About" /> <item android:id="@+id/help" android:title="Help" /> </menu>
      4. 在你的java代码

        @Override
        public boolean onCreateOptionsMenu(Menu menu){
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }