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 为什么我的scrollview会离开;阴影“;在…的后面_Java_Android_Android Fragments_Android Scrollview - Fatal编程技术网

Java 为什么我的scrollview会离开;阴影“;在…的后面

Java 为什么我的scrollview会离开;阴影“;在…的后面,java,android,android-fragments,android-scrollview,Java,Android,Android Fragments,Android Scrollview,因此,我正在开发一个应用程序,它使用firebase加载公交车列表,以及公交车是否到达。我对这方面比较陌生,正在尝试使用片段。我可以通过总线列表成功加载片段,但是当我滚动它们时,它会留下一个项目的副本,如下所示: 主要活动: public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns

因此,我正在开发一个应用程序,它使用firebase加载公交车列表,以及公交车是否到达。我对这方面比较陌生,正在尝试使用片段。我可以通过总线列表成功加载片段,但是当我滚动它们时,它会留下一个项目的副本,如下所示:

主要活动:

public class MainActivity extends AppCompatActivity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setTitle(null);

    Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
    setSupportActionBar(myToolbar);

    FragmentManager manager = getSupportFragmentManager();
    FragmentTransaction transaction = manager.beginTransaction();

    BusFragment busFragment = new BusFragment();
    transaction.add(R.id.buscontainer, busFragment);
    transaction.commit();

}

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

}
主要活动xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.jackheinemann.schoolbus.MainActivity">

    <android.support.v7.widget.Toolbar
        android:id="@+id/my_toolbar"
        android:minHeight="?attr/actionBarSize"
        android:background="@color/colorPrimary"
        android:layout_width="match_parent"
        android:layout_height="64dp"/>

    <FrameLayout
        android:id="@+id/buscontainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom">
    </FrameLayout>


</LinearLayout>

总线碎片:

    public class BusFragment extends Fragment {

    public boolean isInitialized = false;

    // Database Instance Variables
    private FirebaseDatabase mFirebaseDatabase;
    private DatabaseReference mBusref;
    private ChildEventListener mChildEventListener;

    // Tablerow ID's
    final Integer[] tableRows = {R.id.tablerow1, R.id.tablerow2, R.id.tablerow3,
            R.id.tablerow4, R.id.tablerow5, R.id.tablerow6, R.id.tablerow7, R.id.tablerow8,
            R.id.tablerow9, R.id.tablerow10, R.id.tablerow11, R.id.tablerow12,
            R.id.tablerow13, R.id.tablerow14, R.id.tablerow15};

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View busView = inflater.inflate(R.layout.activity_bus_fragment, container, false);
        onSignedInInitialize();
        init();
        return busView;
    }

    public void onSignedInInitialize() {
        if (mChildEventListener == null) {
            mFirebaseDatabase = FirebaseDatabase.getInstance();
            mBusref = mFirebaseDatabase.getReference().child("buses");

            mChildEventListener = new ChildEventListener() {
                @Override
                public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                }

                @Override
                public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                    String bus_name = dataSnapshot.getKey();
                    Boolean bus_loc = dataSnapshot.getValue(Boolean.class);
                    String bus_location = Boolean.toString(bus_loc);

                    Integer findview = grabBusNumber(bus_name);


                    TextView textView = (TextView) getView().findViewById(findview);
                    textView.setText(bus_location);
                }

                @Override
                public void onChildRemoved(DataSnapshot dataSnapshot) {
                }

                @Override
                public void onChildMoved(DataSnapshot dataSnapshot, String s) {
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                }
            };
            mBusref.addChildEventListener(mChildEventListener);

        }
    }

    public void init() {
        mBusref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                int i = 1;
                View view = getView();
                for (DataSnapshot buslist : dataSnapshot.getChildren()) {
                    if (i < 16) {
                        String bus = "Bus " + Integer.toString(i);
                        Boolean location = buslist.getValue(Boolean.class);

                        TextView bus_name = new TextView(getActivity());
                        TextView bus_location = new TextView(getActivity());

                        TableRow.LayoutParams params = new TableRow.LayoutParams(0, TableRow.LayoutParams.WRAP_CONTENT, 1f);

                        bus_name.setText(bus);
                        bus_name.setTextSize(30);
                        bus_name.setLayoutParams(params);
                        bus_name.setGravity(Gravity.CENTER);


                        bus_location.setText(Boolean.toString(location));
                        bus_location.setTextSize(30);
                        bus_location.setLayoutParams(params);
                        bus_location.setGravity(Gravity.CENTER);
                        Integer identifier = i;
                        bus_location.setId(identifier);

                        if (view != null) {
                            TableRow tableRow = (TableRow) view.findViewById(tableRows[i - 1]);
                            tableRow.addView(bus_name);
                            tableRow.addView(bus_location);
                            i++;
                        }
                    }
                }

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
        isInitialized = true;
    }

    private Integer grabBusNumber(String bus_id) {
        String string;
        if (bus_id.charAt(1) != '_') {
            string = Character.toString(bus_id.charAt(0)) + Character.toString(bus_id.charAt(1));
        } else {
            string = Character.toString(bus_id.charAt(0));
        }
        Integer integer = Integer.parseInt(string);
        return integer;
    }
}
公共类BusFragment扩展了片段{
公共布尔值isInitialized=false;
//数据库实例变量
私有FirebaseDatabase mFirebaseDatabase;
私人数据库参考mBusref;
私有ChildEventListener-mChildEventListener;
//表格行ID
最终整数[]tableRows={R.id.tablerow1,R.id.tablerow2,R.id.tablerow3,
R.id.tablerow4,R.id.tablerow5,R.id.tablerow6,R.id.tablerow7,R.id.tablerow8,
R.id.tablerow9,R.id.tablerow10,R.id.tablerow11,R.id.tablerow12,
R.id.tablerow13,R.id.tablerow14,R.id.tablerow15};
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
//为该碎片膨胀布局
视图总线视图=充气机。充气(R.layout.activity\u bus\u片段,容器,假);
onSignedInInitialize();
init();
返回总线视图;
}
公共void onSignedInitialize(){
if(mChildEventListener==null){
mFirebaseDatabase=FirebaseDatabase.getInstance();
mBusref=mFirebaseDatabase.getReference().child(“总线”);
mChildEventListener=new ChildEventListener(){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
字符串bus_name=dataSnapshot.getKey();
Boolean bus_loc=dataSnapshot.getValue(Boolean.class);
字符串bus_location=Boolean.toString(总线位置);
整数findview=grabBusNumber(总线名称);
TextView TextView=(TextView)getView().findViewById(findview);
textView.setText(总线位置);
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
}
@凌驾
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
};
mBusref.addChildEventListener(mChildEventListener);
}
}
公共void init(){
mBusref.addListenerForSingleValueEvent(新值EventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
int i=1;
View=getView();
对于(DataSnapshot总线列表:DataSnapshot.getChildren()){
如果(i<16){
String bus=“bus”+Integer.toString(i);
布尔位置=buslist.getValue(Boolean.class);
TextView总线_name=newtextView(getActivity());
TextView总线位置=新的TextView(getActivity());
TableRow.LayoutParams params=新建TableRow.LayoutParams(0,TableRow.LayoutParams.WRAP_内容,1f);
总线名称.SETEXT(总线);
总线名称。setTextSize(30);
总线名称。setLayoutParams(params);
总线名称设置重力(重心);
bus_location.setText(Boolean.toString(location));
总线位置。setTextSize(30);
总线位置。设置布局参数(参数);
总线位置设置重力(重心);
整数标识符=i;
总线位置setId(标识符);
如果(视图!=null){
TableRow=(TableRow)view.findViewById(tableRows[i-1]);
tableRow.addView(总线名称);
tableRow.addView(总线位置);
i++;
}
}
}
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
isInitialized=true;
}
专用整数grabBusNumber(字符串总线id){
字符串字符串;
如果(总线id.字符(1)!='''\u'){
字符串=Character.toString(总线id.charAt(0))+Character.toString(总线id.charAt(1));
}否则{
字符串=Character.toString(总线id.charAt(0));
}
整数=整数.parseInt(字符串);
返回整数;
}
}
activity_bus_fragment.xml:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_bus_fragment"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.jackheinemann.schoolbus.BusFragment">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">


            <TableLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <TableRow
                    android:id="@+id/tablerow1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow3"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow4"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow5"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow6"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow7"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow8"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow9"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow10"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow11"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow12"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow13"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow14"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />

                <TableRow
                    android:id="@+id/tablerow15"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent" />
            </TableLayout>
    </ScrollView>




</LinearLayout>


对于这里寻找答案的任何人来说,我解决问题的方法是将片段添加更改为片段替换。出于某种原因,它添加了两次碎片,因此出现了“阴影”。替换而不是添加确保只有一个加载并修复了问题。

对于这里寻找答案的任何人来说,我修复问题的方式是将碎片添加更改为碎片替换。出于某种原因,它添加了两次碎片,因此出现了“阴影”。更换而不是添加确保只有o