Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.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 在android中从数组列表中选择一个随机项-为什么我的代码不起作用?_Java_Android - Fatal编程技术网

Java 在android中从数组列表中选择一个随机项-为什么我的代码不起作用?

Java 在android中从数组列表中选择一个随机项-为什么我的代码不起作用?,java,android,Java,Android,我试图创建一个小程序,按下按钮,从媒体对象的阵列列表中选择一个随机的创作媒体。它不起作用了。我是一个完全的Android初学者,我不知道我哪里出了问题。有人能发现我代码中的错误吗 import java.util.ArrayList; import java.util.Random; import android.app.Activity; import android.content.DialogInterface; import android.content.DialogInterfac

我试图创建一个小程序,按下按钮,从
媒体
对象的
阵列列表
中选择一个随机的创作媒体。它不起作用了。我是一个完全的Android初学者,我不知道我哪里出了问题。有人能发现我代码中的错误吗

import java.util.ArrayList;
import java.util.Random;

import android.app.Activity;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        Button button2;
        TextView tvRandomMedia;
        Random rnd = new Random();
        ArrayList<Media> media = new ArrayList<Media>();

        Media m1 = new Media("painting");
        Media m2 = new Media("Paper sculpturing");
        Media m3 = new Media("sawing");
        Media m4 = new Media("writing");
        Media m5 = new Media("dance");
        Media m6 = new Media("playing music");
        Media m7 = new Media("Graphic design");
        Media m8 = new Media("photography");

        button2=(Button) findViewById(R.id.button2);
        button2.setOnClickListener((View.OnClickListener) button2Listener);

        media.add(m1);
        media.add(m2);
        media.add(m3);
        media.add(m4);
        media.add(m5);
        media.add(m6);
        media.add(m7);
        media.add(m8);

        tvRandomMedia = (TextView) findViewById(R.id.textView1);
    }       

    OnClickListener button2Listener=new OnClickListener() {

        @Override
        public void onClick(View v) {
        // TODO Auto-generated method stub
            doRandomMedia();    
        }

        public void doRandomMedia() {
            int creativity = rnd.nextInt(media.size());
            Media expression = media.get(creativity);
            System.out.print("The media of this week is "+ expression); 
        }
    }   
}
import java.util.ArrayList;
导入java.util.Random;
导入android.app.Activity;
导入android.content.DialogInterface;
导入android.content.DialogInterface.OnClickListener;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
公共类MainActivity扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
按钮2;
TextView电视媒体;
随机rnd=新随机();
ArrayList媒体=新的ArrayList();
媒体m1=新媒体(“绘画”);
媒体m2=新媒体(“纸雕刻”);
介质m3=新介质(“锯切”);
媒体m4=新媒体(“写入”);
媒体m5=新媒体(“舞蹈”);
媒体m6=新媒体(“播放音乐”);
媒体m7=新媒体(“平面设计”);
媒体m8=新媒体(“摄影”);
button2=(按钮)findViewById(R.id.button2);
button2.setOnClickListener((View.OnClickListener)button2Listener);
添加介质(m1);
添加介质(m2);
添加介质(m3);
媒体添加(m4);
媒体。添加(m5);
添加介质(m6);
媒体添加(m7);
添加(m8);
tvRandomMedia=(TextView)findViewById(R.id.textView1);
}       
OnClickListener button2Listener=新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
多兰多媒体();
}
公共媒体{
int creative=rnd.nextInt(media.size());
媒体表达=媒体获取(创意);
System.out.print(“本周媒体为“+表达式”);
}
}   
}

我认为您已经将dorandomedia()方法放在了onClickListener中。尝试下面的代码,看看是否有帮助

 import java.util.ArrayList;
 import java.util.Random;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
 import android.widget.TextView;

public class MainActivity45 extends Activity {

    Button button2;
    TextView tvRandomMedia;
    Random rnd = new Random();
    ArrayList<Media> media = new ArrayList<Media>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    Media m1 = new Media("painting");
    Media m2 = new Media("Paper sculpturing");
    Media m3 = new Media("sawing");
    Media m4 = new Media("writing");
    Media m5 = new Media("dance");
    Media m6 = new Media("playing music");
    Media m7 = new Media("Graphic design");
    Media m8 = new Media("photography");

    button2 = (Button) findViewById(R.id.button2);
    button2.setOnClickListener((View.OnClickListener) button2Listener);

    media.add(m1);
    media.add(m2);
    media.add(m3);
    media.add(m4);
    media.add(m5);
    media.add(m6);
    media.add(m7);
    media.add(m8);

    tvRandomMedia = (TextView) findViewById(R.id.textView1);
}

OnClickListener button2Listener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        doRandomMedia();
    }

};

public void doRandomMedia() {
    int creativity = rnd.nextInt(media.size());
    Media expression = media.get(creativity);
    System.out.print("The media of this week is " + expression);
}
}
import java.util.ArrayList;
导入java.util.Random;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.TextView;
公共类维护活动45扩展活动{
按钮2;
TextView电视媒体;
随机rnd=新随机();
ArrayList媒体=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
媒体m1=新媒体(“绘画”);
媒体m2=新媒体(“纸雕刻”);
介质m3=新介质(“锯切”);
媒体m4=新媒体(“写入”);
媒体m5=新媒体(“舞蹈”);
媒体m6=新媒体(“播放音乐”);
媒体m7=新媒体(“平面设计”);
媒体m8=新媒体(“摄影”);
button2=(按钮)findViewById(R.id.button2);
button2.setOnClickListener((View.OnClickListener)button2Listener);
添加介质(m1);
添加介质(m2);
添加介质(m3);
媒体添加(m4);
媒体。添加(m5);
添加介质(m6);
媒体添加(m7);
添加(m8);
tvRandomMedia=(TextView)findViewById(R.id.textView1);
}
OnClickListener button2Listener=新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
多兰多媒体();
}
};
公共媒体{
int creative=rnd.nextInt(media.size());
媒体表达=媒体获取(创意);
System.out.print(“本周媒体为“+表达式”);
}
}

首先将OnClickListener的类型更改为查看。OnClickListener

其次,
媒体
无法从您的
OnClickListener
访问

也许你可以这样做:

...
button2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        doRandomMedia();
    }

    public void doRandomMedia() {
        int creativity = rnd.nextInt(media.size());
        Media expression = media.get(creativity);
        System.out.print("The media of this week is "+ expression);
    }
});
...
在doRandomMedia()方法中,您尝试从方法onCreate()中定义的“媒体”列表中获取信息。您应该移动ArrayList media=new ArrayList();从方法到类

public class MainActivity extends Activity {
    ArrayList<Media> media = new ArrayList<Media>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {}
}
公共类MainActivity扩展活动{
ArrayList媒体=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){}
}

发生了什么?发生了什么,或者你能比“不工作”更好地描述它吗?谢谢@rick当我使用Debbug时收到的错误消息是:“Dead store to rnd in corn.ay.CreativeRoulete.MainActivity.onCreate(bundle)。也许你能理解它?