Java 试图分类

Java 试图分类,java,android,android-intent,Java,Android,Android Intent,因此,我正在构建一个关于事实的应用程序。我为不同的活动创建了不同的按钮,在文本视图中显示了我的事实。我在资产中创建了不同的文本文件,从中提取事实。问题是每次我点击按钮时,我的应用程序都会崩溃。帮帮我,伙计们 我的xml代码 <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" android:l

因此,我正在构建一个关于事实的应用程序。我为不同的活动创建了不同的按钮,在文本视图中显示了我的事实。我在资产中创建了不同的文本文件,从中提取事实。问题是每次我点击按钮时,我的应用程序都会崩溃。帮帮我,伙计们

我的xml代码

<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:id="@+id/n"
    android:layout_centerHorizontal="true"
    android:textSize="35dp" />
<ImageButton
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:id="@+id/btn"
    android:background="@drawable/boombuttonnext"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<ImageButton
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:id="@+id/prev"
    android:background="@drawable/backk"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true" />

我的Java代码

public class MainActivity22Activity extends AppCompatActivity {

    ImageButton btn,prev;
    TextView tc;
    ArrayList<String> listOfFacts;
    int position = 0;

    void init()
    {
        listOfFacts = new ArrayList<String>();

        try {
            InputStream is =  getAssets().open("boom.txt");

            BufferedReader in = new BufferedReader(new InputStreamReader(is));
            String line ;
            while( (line =  in.readLine())   != null)
                listOfFacts.add(line);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }


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


        setContentView(R.layout.activity_main);
        init();




        position =   getSharedPreferences("storage" ,1).getInt("pos",0);


        btn  = (ImageButton) findViewById(R.id.btn);
        prev  = (ImageButton) findViewById(R.id.prev);
        tc = (TextView) findViewById(R.id.b);

        tc.setText("" + listOfFacts.get(position));





        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {



                position++;

                if(listOfFacts.size()==position)
                    position = 0;

                tc.setText("" + listOfFacts.get(position));


            }
        });

        prev.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                position--;

                if(position<0)
                    position = listOfFacts.size()-1;

                tc.setText("" + listOfFacts.get(position));

            }
        });

    }


    @Override
    protected void onPause() {
        super.onPause();
        getSharedPreferences("storage" ,1).edit().putInt("pos" , position).commit();
    }
}
公共类MainActivity22Activity扩展了AppCompatActivity{
图像按钮btn,上一个;
TextView tc;
ArrayList列表;
int位置=0;
void init()
{
listOfFacts=newarraylist();
试一试{
InputStream is=getAssets().open(“boom.txt”);
BufferedReader in=新的BufferedReader(新的InputStreamReader(is));
弦线;
而((line=in.readLine())!=null)
添加(行);
}捕获(IOE异常){
e、 printStackTrace();
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
位置=GetSharedReferences(“存储”,1)。getInt(“位置”,0);
btn=(ImageButton)findViewById(R.id.btn);
prev=(ImageButton)findViewById(R.id.prev);
tc=(TextView)findViewById(R.id.b);
tc.setText(“+listOfFacts.get(position));
btn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
位置++;
if(listOfFacts.size()=位置)
位置=0;
tc.setText(“+listOfFacts.get(position));
}
});
prev.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
位置--;

如果(position来自logcat的输出,则在访问数组时出现问题。请确保从数组中获取元素的索引没有超出边界

>
位于bollywoodfacts.checkinglist.MainActivity2Activity.onCreate(MainActivity2Activity)的java.util.ArrayList.get(ArrayList.java:308)处的java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)处‌​.android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)的android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)的android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)的java:63)


它在哪里崩溃?请发布堆栈traceW/OpenGLRenderer﹕ 未能在表面0xa6c19ae0上设置EGL_交换行为,错误=EGL_成功06-05 23:50:59.277 2105-2105/bollywoodfacts.checkinglist I/Choreographer﹕ 跳过40帧!应用程序可能在其主线程上做了太多工作。06-05 23:51:01.432 2105-2128/bollywoodfacts.checkinglist W/EGL_仿真﹕ eglSurfaceAttrib未实施06-05 23:51:01.432 2105-2128/bollywoodfacts.checkinglist W/OpenGLRenderer﹕ 未能在表面0xa6c19ae0上设置EGL_交换行为,错误=EGL_成功06-05 23:51:09.533 2105-2114/bollywoodfacts.checkinglist W/art﹕暂停所有线程的时间:14.965ms 06-05 23:51:12.128 2105-2105/bollywoodfacts.checkinglist D/AndroidRuntime﹕ 正在关闭VM-----崩溃开始06-05 23:51:12.145 2105-2105/bollywoodfacts.checkinglist E/AndroidRuntime﹕ 致命异常:主进程:bollywoodfacts.checkinglist,PID:2105 java.lang.RuntimeException:无法启动活动组件信息{bollywoodfacts.checkinglist/bollywoodfacts.checkinglist.MainActivity2Activity}:java.lang.IndexOutOfBoundsException:索引0无效,大小为0这是我在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)上的日志,在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)在android.app.ActivityThread.access$800(ActivityThread.java:144)在android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThread.java:5221)在java.lang.reflect.Method.invoke(本机方法)在android.app.app.ActivityThread.java:1278java.lang.reflect.Method.invoke(Method.java:372)位于com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)原因:java.lang.IndexOutOfBoundsException:索引0无效,大小为0@AkshayRathee使用前请检查索引是否在边界内。
tc.setText("" + listOfFacts.get(position));