Javascript 将活动转换为AppCompatActivity时,为什么没有menu.main,以及如何替换它?

Javascript 将活动转换为AppCompatActivity时,为什么没有menu.main,以及如何替换它?,javascript,android-activity,android-menu,appcompatactivity,Javascript,Android Activity,Android Menu,Appcompatactivity,我对安卓开发非常陌生。我正在学习一个教程,希望使用AppCompatActivity而不是旧的活动来完成它。我想膨胀菜单,虽然我不知道为什么菜单不自动在res文件夹中。它无法解析symbol menu_main.xml。在这种情况下,我应该做什么?发生了什么事?谢谢 package com.example.android.cameraattempt; import android.app.Activity; import android.content.Intent; import andro

我对安卓开发非常陌生。我正在学习一个教程,希望使用AppCompatActivity而不是旧的活动来完成它。我想膨胀菜单,虽然我不知道为什么菜单不自动在res文件夹中。它无法解析symbol 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);
}
}
  • 菜单是直接的,不会出现,因为现在Android Studio没有创建菜单。在视频中,请参见01:32秒指定菜单资源的规定。新studio中当前没有此选项

  • 对于“无法解析符号menu_main.xml”的问题,我希望您的项目中已经存在menu_main.xml文件

    • 如果文件菜单_main.xml已存在

    • 在“res”下创建一个名为“menu”的文件夹
    • 将“menu_main.xml”放在创建的“menu”文件夹中
    • 在java代码中

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

    • 在“res”下创建一个名为“menu”的文件夹
    • 在创建的“菜单”文件夹中创建一个文件“menu_main.xml”
    • 将下面的xml代码放在menu_main.xml内(如果需要,您可以修改)
      
      
    • 在java代码中

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

  • 谢谢我现在觉得奇怪的是,action_设置在这里是一个项目[link](),但在我的代码中,它不会自动出现在列表中,并且无法解析。此外,当我使用这段代码时,应用程序没有绑定。“我正在使用Android Studio 2.3.3,更新Nouget,速度不如标题“quick Fix”,所以我必须等待实验。在menu_main.xml中,alt enter解决了应用程序的问题,但操作设置无法解决。在MainActivity.java中,所有出现的R都不是未解决的。我发现在menu_main.xml@string/action_设置可以替换为“settings”,这将删除错误,R将再次工作。如果在res/values文件中创建设置,并在menu_main.xml中设置@string/action_,则可以使用不同外语的字符串文件。我从我的新书《面向傻瓜的Android应用程序开发:一体机》中得到了这一点。英雄联盟