需要帮助使用Android菜单

时间:2015-11-03 03:29:57

标签: java video android-menu

Android Studio新手,我无法找到任何对我有意义的菜单,让菜单以我想要的方式运行。

我的应用将视频从我的网站流式传输到设备。该菜单包含3个要观看的视频列表。我希望用户能够打开菜单,选择他们想要观看的视频,然后将该视频加载到播放器中。我已经完成了所有工作,但是当您点击菜单中的视频时没有任何反应,我知道这是因为我的 MainActivity.java 文件中没有代码。 这是 MainActivity.java 的样子:

package com.mywebsite.videostreamer;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.net.Uri;
import android.widget.MediaController;
import android.widget.VideoView;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    VideoView vidView = (VideoView) findViewById(R.id.myVideo);
    String vidAddress = "http://www.mywebsite.com/vids/vidOne.mp4";
    Uri vidUri = Uri.parse(vidAddress);
    vidView.setVideoURI(vidUri);
    MediaController vidControl = new MediaController(this);
    vidControl.setAnchorView(vidView);
    vidView.setMediaController(vidControl);
    vidView.start();
    vidView.seekTo(100);
    vidView.pause();
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    switch (item.getItemId()) {

        case R.id.vidOne:
            return true;

        case R.id.vidTwo:
            return true;

        case R.id.vidThree:
            return true;
    }
        return super.onOptionsItemSelected(item);
    }

public void showPopup(MenuItem item) {
}
}

使用此代码和menu_main.xml文件中的代码,我可以启动应用,点击菜单按钮查看可用视频列表,然后当我点击视频时,没有任何反应,因为我没有代码告诉它该怎么做。

我假设我需要创建 @Override 的另一个实例并拥有 int id = item.getItemId(); ,即id变量包含选择,将url字符串+ id变量放在一起。像 String vidAddress = "http://www.mywebsite.com/vids/ + id; 这样的内容将包含在新的 @Override 部分中,并会在选中后处理新视频。

我在球场吗?有人能帮我找到座位吗?

1 个答案:

答案 0 :(得分:1)

首先,值得一提的是' @ override'不是你创建实例的对象或事物,以防万一这就是你的意思。

这意味着超级类,即正在被子类化的类,具有相同名称的方法,并且这种方法被过度写入'在当前班级。

因此,对于您的上述情况,超类' AppCompatActivity'已经有一个方法' onOptionsItemSelected' (例如)这是在你的主要活动'类。

对于您的具体问题,您可以采取不同的方法,但如果您想检查它是否能够快速完成,您可以直接在' onOptionsItemSelected'中更改视频。码。换句话说,假设onCreate中的视频播放代码有效,则当用户点击第一个选项时,以下内容应更改视频:

public class MainActivity extends AppCompatActivity {

private VideoView vidView;
.
.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    switch (item.getItemId()) {

        case R.id.vidOne: {
            vidView.stopPlayback();
            videoUri = Uri.parse("http://www.mywebsite.com/vids/NewVideo.mp4");
            vidView.setVideoURI(videoUri);
            vidView.start();
            return true;

        case R.id.vidTwo:
            return true;

        case R.id.vidThree:
            return true;
    }
        return super.onOptionsItemSelected(item);
    }

请注意,vidView的定义是在onCreate之外进行的,因此您也可以在其他地方使用它。

你不一定总是希望在回电本身内完成实际工作,但尝试上述工作至少会让你感觉它是如何工作的,你可以决定是否要修改它。