Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果未清除数组,则弹出菜单值获取重复值_Java_Android_Arrays_Android Studio_Menuitem - Fatal编程技术网

Java 如果未清除数组,则弹出菜单值获取重复值

Java 如果未清除数组,则弹出菜单值获取重复值,java,android,arrays,android-studio,menuitem,Java,Android,Arrays,Android Studio,Menuitem,我正在创建一个弹出菜单,当我清除marker array markersArray.clear()时,我从数组名称(markersArray)中获取菜单项,我没有获取任何值,但当我没有清除markersArray时,我获取了值,但问题是每当调用onlocationchange函数时,菜单项都会获取重复值,如何解决这个问题--需要帮助 private void RetriveDataMethod() { // Attach a listene

我正在创建一个弹出菜单,当我清除marker array markersArray.clear()时,我从数组名称(markersArray)中获取菜单项,我没有获取任何值,但当我没有清除markersArray时,我获取了值,但问题是每当调用onlocationchange函数时,菜单项都会获取重复值,如何解决这个问题--需要帮助

private void RetriveDataMethod()
            {
                // Attach a listener to read the data at our posts reference
                myRef.child(Global.trip_name).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {

                        for (DataSnapshot chatSnapshot: dataSnapshot.getChildren()) {
                            MarkerData data2 = chatSnapshot.getValue(MarkerData.class);
                            String lat = data2.getLatitude();
                            String longt = data2.getLongtitude();
                            String cname = data2.getCarname();
                            String cimg   = data2.getCar_image();

                            markersArray.add(data2);
                        }
                             markersArray.size();
                             mMap.clear();

                        for(int i=0; i<markersArray.size(); i++)
                        {
                            String caname = markersArray.get(i).getCarname();
                            float zom1 =Float.parseFloat(Global.zoom_val);
                            System.out.println("================>" + caname);
                            car_img = markersArray.get(i).getCar_image();
                            double l1 = Double.parseDouble(markersArray.get(i).getLatitude());
                            double l2 = Double.parseDouble(markersArray.get(i).getLongtitude());
                            che2 = new LatLng(l1, l2);
                            mMap.addMarker(new MarkerOptions().position(che2).title(caname).icon(BitmapDescriptorFactory.fromResource(getResources().getIdentifier(car_img, "drawable", getPackageName()))));
                            mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(che2, zom1));
                            mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(che2, zom1));
                            System.out.println("=======Zoom=========>" + zom1);
                        }
                        System.out.println("=======Size=========>" + markersArray.size());

                        getSupportActionBar().setTitle(Global.trip_name);


                        final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
                        fab.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                // Click action
                                System.out.println("Float Icon Clicked");
                                //Creating the instance of PopupMenu
                                PopupMenu popup = new PopupMenu(MapsActivity.this, fab);
                                //Inflating the Popup using xml file


                                popup.getMenuInflater().inflate(R.menu.poupup_menu, popup.getMenu());

                                for (int i = 0; i < markersArray.size(); i++) {
                                    String caname = markersArray.get(i).getCarname();
                                    popup.getMenu().add(caname);
                                }
                                System.out.println("=======Size=========>" + markersArray.size());


                                //registering popup with OnMenuItemClickListener
                                popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                                    public boolean onMenuItemClick(MenuItem item) {
                                        Toast.makeText(MapsActivity.this, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
                                        return true;
                                    }
                                });

                                popup.show();//showing popup menu

                            }
                        });

                        markersArray.clear();
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                        System.out.println("The read failed: " + databaseError.getCode());
                    }
                });
            }
private void retrieveDataMethod()
{
//附加一个侦听器来读取posts引用中的数据
myRef.child(Global.trip_name).addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
对于(DataSnapshot chatSnapshot:DataSnapshot.getChildren()){
MarkerData data2=chatSnapshot.getValue(MarkerData.class);
字符串lat=data2.getLatitude();
字符串longt=data2.getLongtentity();
字符串cname=data2.getCarname();
字符串cimg=data2.getCar_image();
markersArray.add(数据2);
}
markersArray.size();
mMap.clear();

对于(int i=0;我必须粘贴相关的代码我已经添加了它在哪里是onlocationchange?在onlocation change方法中,我每隔3秒调用private void RetrieveDataMethod(),因此每当调用时,标记数组都会获得重复的值,当我清除数组时菜单会变大,它不会显示在任何值中。
final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
                fab.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        // Click action
                        System.out.println("Float Icon Clicked");
                        //Creating the instance of PopupMenu
                        PopupMenu popup = new PopupMenu(MapsActivity.this, fab);
                        //Inflating the Popup using xml file


                    popup.getMenuInflater().inflate(R.menu.poupup_menu, popup.getMenu());

                    for (int i = 0; i < markersArray.size(); i++) {
                        String caname = markersArray.get(i).getCarname();
                        popup.getMenu().add(caname);
                    }
                    System.out.println("=======Size=========>" + markersArray.size());


                    //registering popup with OnMenuItemClickListener
                    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        public boolean onMenuItemClick(MenuItem item) {
                            Toast.makeText(MapsActivity.this, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
                            return true;
                        }
                    });

                    popup.show();//showing popup menu

                }
            });

            markersArray.clear();
        }