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)?您收到了哪个错误?它根本不会启动。它只是崩溃并说“不幸的是,应用程序已经停止”。它没有显示我的应用程序的主屏幕。