Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过微调器选择音乐并播放_Java_Android_Xml - Fatal编程技术网

Java 通过微调器选择音乐并播放

Java 通过微调器选择音乐并播放,java,android,xml,Java,Android,Xml,我想做的是添加一个微调器和一个按钮,在微调器中,当我选择播放的歌曲时,会放置两首歌曲,与其他歌曲相同,但当我运行此代码时,它不会做任何事情,只显示微调器和按钮,我只选择一首歌曲,当我单击播放按钮时,它不会响应 import android.media.MediaPlayer; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu

我想做的是添加一个微调器和一个按钮,在微调器中,当我选择播放的歌曲时,会放置两首歌曲,与其他歌曲相同,但当我运行此代码时,它不会做任何事情,只显示微调器和按钮,我只选择一首歌曲,当我单击播放按钮时,它不会响应

import android.media.MediaPlayer;    
import android.support.v7.app.ActionBarActivity;    
import android.os.Bundle;    
import android.view.Menu;    
import android.view.MenuItem;    
import android.view.View;    
import android.widget.AdapterView;    
import android.widget.ArrayAdapter;    
import android.widget.Button;    
import android.widget.Spinner;    
import android.widget.Toast;    


public class MainActivity extends ActionBarActivity {    
public int soundSelection;    
MediaPlayer mp;    
Button btn;    
@Override    
protected void onCreate(Bundle savedInstanceState) {    
    super.onCreate(savedInstanceState);    
    setContentView(R.layout.activity_main);    
    Spinner spinner = (Spinner) findViewById(R.id.spinner1);    
    btn=(Button)findViewById(R.id.button1);    
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.soundEntries, android.R.layout.simple_spinner_item);    
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    
    spinner.setAdapter(adapter);    
    btn.setOnClickListener(new View.OnClickListener() {    
        @Override    
        public void onClick(View v) {    
            switch (soundSelection) {    
                case 1:    
                   if (mp != null && mp.isPlaying())    

                    mp = MediaPlayer.create(MainActivity.this, R.raw.bewafa);    
                    mp.start();    
                    mp.setVolume(100,100);    
                    mp.setLooping(true);    
                    Toast t = Toast.makeText(MainActivity.this,"bewafa",Toast.LENGTH_LONG);
                    t.show();    
                    break;    
                case 2:    
                    // if(mp.isPlaying())    

                    mp = MediaPlayer.create(getApplicationContext(), R.raw.dildobaa);    
                    mp.start();    
                    Toast th = Toast.makeText(getApplicationContext(), "dildobaa", Toast.LENGTH_LONG);    
                    th.show();    
                    break;

            }   
        }   
    });    
}    






/*Spinner Functions*/
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)     
    soundSelection=(Integer)parent.getItemAtPosition(pos);    
}    

public void onNothingSelected(AdapterView<?> parent) {    
    // Do nothing.    
}    

@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();    

    //noinspection SimplifiableIfStatement    
    if (id == R.id.action_settings) {    
        return true;    
    }    

    return super.onOptionsItemSelected(item);    
}    
导入android.media.MediaPlayer;
导入android.support.v7.app.ActionBarActivity;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.Spinner;
导入android.widget.Toast;
公共类MainActivity扩展了ActionBarActivity{
公共选择;
MediaPlayer mp;
按钮btn;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
微调器微调器=(微调器)findViewById(R.id.spinner1);
btn=(按钮)findViewById(R.id.button1);
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.soundEntries,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
开关(声音选择){
案例1:
if(mp!=null&&mp.isPlaying())
mp=MediaPlayer.create(MainActivity.this,R.raw.bewafa);
mp.start();
mp.设定音量(100100);
mp.setLooping(真);
Toast t=Toast.makeText(MainActivity.this,“bewafa”,Toast.LENGTH\u LONG);
t、 show();
打破
案例2:
//if(mp.isPlaying())
mp=MediaPlayer.create(getApplicationContext(),R.raw.dildobaa);
mp.start();
Toast th=Toast.makeText(getApplicationContext(),“dildobaa”,Toast.LENGTH\u LONG);
th.show();
打破
}   
}   
});    
}    
/*微调器函数*/
已选择公共位置(AdapterView父项、视图、整数位置、长id)
soundSelection=(整数)parent.getItemAtPosition(pos);
}    
未选择的公共无效(AdapterView父项){
//什么也不做。
}    
@凌驾
公共布尔onCreateOptions菜单(菜单菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(MenuItem项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
//noinspection SimplifiableIf语句
如果(id==R.id.action_设置){
返回true;
}    
返回super.onOptionsItemSelected(项目);
}    
} 这是Xml代码:

   <LinearLayout    
      xmlns:android="http://schemas.android.com/apk/res/android"    
      xmlns:tools="http://schemas.android.com/tools"    
      android:layout_width="match_parent"    
      android:layout_height="match_parent"   
      android:paddingLeft="@dimen/activity_horizontal_margin"    
      android:paddingRight="@dimen/activity_horizontal_margin"    
      android:paddingTop="@dimen/activity_vertical_margin"    
      android:orientation="vertical"    
      android:paddingBottom="@dimen/activity_vertical_margin"   

      tools:context=".MainActivity">    
<Spinner
    android:layout_width="wrap_content"
    android:entries="@array/soundEntries"
    android:layout_height="wrap_content"
    android:id="@+id/spinner1">

    </Spinner>
    <Button
        android:layout_width="wrap_content"
       android:text="Play"

       android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:id="@+id/button1" />

这是Strings.xml:


试验
你好,世界!
设置
贝瓦法
迪尔多巴

对代码进行以下更改:

实现AdapterView.OnItemSelectedListener

public class MainActivity extends ActionBarActivity implements AdapterView.OnItemSelectedListener {
将开关外壳更改为0和1。(计数以0开始)

注释掉这行:
if(mp!=null&&mp.isPlaying())

将回调方法更改为:

public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    soundSelection = pos;
}
public void已选择(AdapterView父视图、视图视图、整数位置、长id){
声音选择=位置;
}

您尚未设置/实现
微调器
回调接口。这意味着将永远不会调用
onItemSelected(…)
方法。请尝试以下行:
soundSelection=(Integer)parent.getItemAtPosition(pos)执行此操作:
soundSelection=pos
@Squonk:告诉我如何实现,用那种方法编辑我的代码AdarView.OnItemSelectedListener:我如何实现,当我实现您的更改并运行时,上面写着:java.lang.NullPointerException:尝试调用虚拟方法'boolean android.media.MediaPlayer.isPlaying()'在空对象引用的适配器视图上。编辑了我的答案。现在试试。你需要再注释一行。我如何实现AdapterView.OnItemSelectedListener:我想要的是从微调器中选择一首歌曲,然后单击播放按钮,以便为另一首歌曲播放相同的歌曲。因此,请编辑我的代码,将您的MainActivity类声明更改为我在上面发布的内容。您已经实现了它的方法。
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    soundSelection = pos;
}