当我尝试启动它时,我的应用程序崩溃了

时间:2015-01-02 09:35:39

标签: arrays string crash

当我尝试启动它时,我的应用程序崩溃了。

我试图学习如何通过一系列字符串让应用程序循环,然后在挑选完所有内容后重复。只需按一下按钮即可完成。但是当我尝试在手机上启动它时崩溃了。任何建议或帮助将不胜感激。

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;
}
}

2 个答案:

答案 0 :(得分:0)

发现了这个问题。我只需要改变&#34; TextView textOne ....&#34;到#34;最终TextView textOne ...&#34;并将其放在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;
}
}

答案 1 :(得分:0)

只是为了获取信息,因为您在Android日志中是新手,可以为您提供更多帮助。 日志将在您的设备上的eclipse工具(您正在使用的开发工具)中。 将视角更改为DDMS - &gt;转到LogCat。 其中会有错误日志。