每当我调用Activity时,应用程序崩溃并发出错误

时间:2018-01-20 17:12:39

标签: java android crash

public class MainActivity extends AppCompatActivity {

FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance ();
DatabaseReference databaseReference = firebaseDatabase.getReference ();
ListView listView;
List<String> ListString = new ArrayList<String> ();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView (R.layout.activity_main22);
    ListString.add ("Hello");
    databaseReference.addValueEventListener (new ValueEventListener () {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            DataSnapshot snapshot = dataSnapshot.child ("User");
            for(DataSnapshot s: snapshot.getChildren ())
                Toast.makeText (MainActivity.this, s.getKey ().toString (), Toast.LENGTH_SHORT).show ();

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    listView = (ListView) findViewById (R.id.listview);
    ListAdapter listAdapter = new ListAdapter (MainActivity.this, ListString);
    listView.setAdapter (listAdapter);
    DatabaseReference s = databaseReference.child ("User");
    DatabaseReference p = s.child ("Name");
    p.setValue (ListString.get (1));

} }

正如我所说,每当我调用此活动时,它会崩溃应用程序并且logcat是

  

java.lang.RuntimeException:无法启动活动   ComponentInfo {lifeline.learn.com.attendencemarker / lifeline.learn.com.attendencemarker.MainActivity}:   java.lang.IndexOutOfBoundsException:索引:1,大小:1                                                                                        在   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984)                                                                                        在   android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)                                                                                        在android.app.ActivityThread.-wrap14(ActivityThread.java)                                                                                        在   android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1642)                                                                                        在android.os.Handler.dispatchMessage(Handler.java:102)                                                                                        在android.os.Looper.loop(Looper.java:154)                                                                                        在android.app.ActivityThread.main(ActivityThread.java:6776)                                                                                        at java.lang.reflect.Method.invoke(Native Method)                                                                                        在   com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1518)                                                                                        在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)                                                                                     引起:java.lang.IndexOutOfBoundsException:索引:1,大小:1

3 个答案:

答案 0 :(得分:0)

此行导致错误

p.setValue (ListString.get (1));

ListString中只有一个值,您可以访问第二个值,将其更改为

p.setValue (ListString.get (0));

答案 1 :(得分:0)

就像错误说java.lang.IndexOutOfBoundsException: Index: 1, Size: 1你想要访问索引1或大小一的列表一样。记住计数从零开始,因此将p.setValue (ListString.get (1));更改为 p.setValue (ListString.get (0));

答案 2 :(得分:0)

此行是崩溃的地方:

p.setValue (ListString.get (1));

此时,ListString只有一个元素。 List对象具有从零开始的索引。因此,当您尝试访问列表中第二元素的索引1时,而不是第一个。所以,你真正需要的是:

p.setValue (ListString.get (0));