【问题标题】:Whenever I call the Activity, the app crashed and gives an error每当我调用 Activity 时,应用程序崩溃并给出错误
【发布时间】:2018-01-20 17:12:38
【问题描述】:
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:无法启动活动 组件信息{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) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) 引起:java.lang.IndexOutOfBoundsException:索引:1,大小:1

【问题讨论】:

    标签: java android crash


    【解决方案1】:

    此行导致错误

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

    您在 ListString 中只有一个值,并且您访问第二个值将其更改为下面

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        这一行是崩溃的地方:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-27
          • 1970-01-01
          • 2023-03-14
          • 1970-01-01
          • 2019-06-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多