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)。也许你能理解它?