Arrays 我的应用程序在尝试启动时崩溃
我的应用程序在尝试启动时崩溃 我正在尝试学习如何让应用程序在字符串数组中循环,然后在选择完所有内容后重复。这是通过按下按钮来完成的。但当我尝试在手机上启动它时,它崩溃了。如有任何建议或帮助,将不胜感激Arrays 我的应用程序在尝试启动时崩溃,arrays,string,crash,Arrays,String,Crash,我的应用程序在尝试启动时崩溃 我正在尝试学习如何让应用程序在字符串数组中循环,然后在选择完所有内容后重复。这是通过按下按钮来完成的。但当我尝试在手机上启动它时,它崩溃了。如有任何建议或帮助,将不胜感激 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MainActivity extends Activity {
TextView textOne = (TextView) findViewById(R.id.TextView1);
Button pushMe = (Button) findViewById(R.id.button);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pushMe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textOne.setText(pick());
}
List<String> myStrings = new ArrayList<String>() {{
add("b");
add("a");
add("z");
add("y");
add("x");
}};
List<String> dupeList = new ArrayList<String>() {{
addAll(myStrings);
}};
Random r = new Random();
public String pick() {
String retval = "";
int pos;
switch (dupeList.size()) {
case 1:
retval = dupeList.get(0);
dupeList.clear();
dupeList.addAll(myStrings);
return retval;
default:
pos = r.nextInt(dupeList.size());
retval = dupeList.get(pos);
dupeList.remove(pos);
return retval;
}
}
});
}
@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;
}
//this opens another activity
@Override
public boolean onOptionsItemSelected (MenuItem item){
switch (item.getItemId()) {
case R.id.RulesButton:
startActivity(new Intent(this, RulesActivity.class));
break;
}
return true;
}
}
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Random;
公共类MainActivity扩展了活动{
TextView textOne=(TextView)findViewById(R.id.TextView1);
按钮pushMe=(按钮)findViewById(R.id.Button);
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
setText(pick());
}
List myStrings=new ArrayList(){{
添加(“b”);
添加(“a”);
添加(“z”);
添加(“y”);
添加(“x”);
}};
List dupeList=new ArrayList(){{
addAll(myStrings);
}};
随机r=新随机();
公共字符串选取(){
字符串retval=“”;
int pos;
开关(dupeList.size()){
案例1:
retval=dupeList.get(0);
双重列表。清除();
dupeList.addAll(myStrings);
返回返回;
违约:
pos=r.nextInt(dupeList.size());
retval=dupeList.get(pos);
拆下双面列表(位置);
返回返回;
}
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
//这将打开另一个活动
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.规则按钮:
startActivity(新意图(此,RulesActivity.class));
打破
}
返回true;
}
}
找到了问题。我只需要将“TextView textOne…”更改为“final TextView textOne…”并将其放在onCreate方法下面
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textOne = (TextView) findViewById(R.id.TextView1);
Button pushMe = (Button) findViewById(R.id.button);
pushMe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textOne.setText(pick());
}
List<String> myStrings = new ArrayList<String>() {{
add("b");
add("a");
add("z");
add("y");
add("x");
}};
List<String> dupeList = new ArrayList<String>() {{
addAll(myStrings);
}};
Random r = new Random();
public String pick() {
String retval = "";
int pos;
switch (dupeList.size()) {
case 1:
retval = dupeList.get(0);
dupeList.clear();
dupeList.addAll(myStrings);
return retval;
default:
pos = r.nextInt(dupeList.size());
retval = dupeList.get(pos);
dupeList.remove(pos);
return retval;
}
}
});
}
@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;
}
//this opens another activity
@Override
public boolean onOptionsItemSelected (MenuItem item){
switch (item.getItemId()) {
case R.id.RulesButton:
startActivity(new Intent(this, RulesActivity.class));
break;
}
return true;
}
}
导入android.app.Activity;
导入android.content.Intent;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Random;
公共类MainActivity扩展了活动{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
最终TextView textOne=(TextView)findViewById(R.id.TextView1);
按钮pushMe=(按钮)findViewById(R.id.Button);
setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
setText(pick());
}
List myStrings=new ArrayList(){{
添加(“b”);
添加(“a”);
添加(“z”);
添加(“y”);
添加(“x”);
}};
List dupeList=new ArrayList(){{
addAll(myStrings);
}};
随机r=新随机();
公共字符串选取(){
字符串retval=“”;
int pos;
开关(dupeList.size()){
案例1:
retval=dupeList.get(0);
双重列表。清除();
dupeList.addAll(myStrings);
返回返回;
违约:
pos=r.nextInt(dupeList.size());
retval=dupeList.get(pos);
拆下双面列表(位置);
返回返回;
}
}
});
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(右菜单菜单菜单主菜单);
返回true;
}
//这将打开另一个活动
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例R.id.规则按钮:
startActivity(新意图(此,RulesActivity.class));
打破
}
返回true;
}
}
仅供参考,因为您在Android日志中是新手,这将为您提供更多帮助。
日志将在eclipse工具(您正在使用的开发工具)中,而不是在您的设备上。
将透视图更改为DDMS->转到LogCat。
其中会有错误日志。Stacktrace(Logcat)?您收到了哪个错误?它根本不会启动。它只是崩溃并说“不幸的是,应用程序已经停止”。它没有显示我的应用程序的主屏幕。