【问题标题】:Android: ScrollView does't clean background when scrollingAndroid:滚动时 ScrollView 不清理背景
【发布时间】:2018-07-26 18:43:55
【问题描述】:

我有一个很奇怪的问题,如下图所示:

滚动前捕获顶部图片,滚动后捕获底部图片。 Android 不会清除背景以擦除起始视图。如果我接受黑色背景,我可以解决这个问题(可以通过激活注释代码来完成 android:background="#111100"> 在 fragment.xml 中),但我不会这样做。

fragment_paavalikko.xml:

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="fill_parent"
    android:layout_width="fill_parent"
    android:scrollbars="vertical"
    android:id="@+id/vScroll">
    <!--  android:background="#111100">  -->

    <HorizontalScrollView
        android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:scrollbars="horizontal"
        android:id="@+id/hScroll">
        <!--  android:background="#111100">  -->

        <LinearLayout
            android:id="@+id/paavalikkoSisalto"
            android:layout_width="match_parent"
            android:layout_height="469dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:orientation="horizontal" >

        </LinearLayout>

    </HorizontalScrollView>

</ScrollView>

activity_aktiviteetti1.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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.mannonen.tasavalta.Aktiviteetti1" >

    <FrameLayout
        android:id="@+id/aktiviteetti1Sisalto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>

</RelativeLayout>

Activity1.java:

package com.mannonen.tasavalta;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.*;

public class Aktiviteetti1 extends FragmentActivity {

    // Used to load the 'native-lib' library on application startup.
    static {
        System.loadLibrary("native-lib");
    }

    PaaValikko fragmentti1;

    //aktiviteetin konstruktori
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_aktiviteetti1);

        //päävalikko on fragmentissa, joka pitää lisätä aktiviteettiin heti
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction =  fragmentManager.beginTransaction();
        fragmentti1 = new PaaValikko();
        fragmentTransaction.add(R.id.aktiviteetti1Sisalto, fragmentti1);
        fragmentTransaction.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_aktiviteetti1, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A native method that is implemented by the 'native-lib' native library,
     * which is packaged with this application.
     */
    public native String stringFromJNI();
}

PaaValikko.java

package com.mannonen.tasavalta;

import android.support.v4.app.*;

import java.io.*;
import android.os.Bundle;
import android.view.*;
import android.widget.*;


public class PaaValikko extends Fragment {

    private ScrollView vScroll;
    private HorizontalScrollView hScroll;
    private Muisti mMuisti;
    private LinearLayout[] mPalstat;
    private LinearLayout mJuuri;
    private TextView mBookmarks;
    private ToggleButton mLanguage;
    private ToggleButton mGraphics;
    private Button mCreateBookmark;
    private Button mHelp;
    private Button mAbout;
    private Button mBookmark1;
    private Button mBookmark2;
    private Button mBookmark3;
    private Button mBookmark4;
    private Button mBookmark5;
    private Button mBookmark6;
    private Button mBookmark7;
    private Button mBookmark8;
    private Button mBookmark9;
    private Button[] mTiedostot;
    private TextView m3D1;
    private TextView m3D2;
    private TextView m3D3;
    private TextView m3D4;
    private TextView m3D5;
    private TextView mStories1;
    private TextView mStories2;
    private TextView mStories3;
    private TextView mStories4;
    private TextView mStories5;
    private String[] mTiedostoNimet;
    private int mNimiLaskuri=0;
    private float mx, my;
    private View mView;

    //Tämä luokka käsittelee päävalikon vakionappien sekä
    //mahdollisten kirjanmerkkien onClick tapahtumat
    class VakioNappi implements View.OnClickListener {

        @Override
        public void onClick(View v) {

            int tag=(Integer) v.getTag();
            switch (tag)
            {
                case 2001:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2002:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2003:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2004:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2005:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2006:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2007:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2008:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2009:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2010:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2011:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2012:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2013:
                    v.setBackgroundColor(0xffff0000);
                    break;
                case 2014:
                    v.setBackgroundColor(0xffff0000);
                    break;
            }
        }

    }

    //Tämä luokka käsittelee päävalikon CAD -nappuloiden onClick tapahtumat
    class CADNappi implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            int tag=(Integer) v.getTag();
            String tiedostoNimi=mTiedostoNimet[tag];
            v.setBackgroundColor(0xff0000ff);
        }

    }

    //Tämä luokka käsittelee päävalikon teksti -nappuloiden onClick tapahtumat
    class TekstiNappi implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            int tag=(Integer) v.getTag();
            String tiedostoNimi=mTiedostoNimet[tag];
            v.setBackgroundColor(0xffff00ff);
        }

    }

    //Tätä metodia kutsutaan, kun fragmentti luodaan, joko dynaamisesti
    //tai xml-tiedostosta
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {

        //Aktivoidaan tiedot kovalevyltä, jos jotain on olemassa
        ObjectInputStream sisaan=null;
        try {
            sisaan=new ObjectInputStream(
                new FileInputStream("Muisti.txt"));
            try {
                mMuisti=(Muisti)sisaan.readObject();
                sisaan.close();
            } catch ( OptionalDataException e) {
                mMuisti=new Muisti();
            } catch (ClassNotFoundException e) {
                mMuisti=new Muisti();
            } catch (IOException e) {
                mMuisti=new Muisti();
            }
        } catch (FileNotFoundException e) {
            mMuisti=new Muisti();
        } catch (StreamCorruptedException e) {
            mMuisti=new Muisti();
        } catch (IOException e) {
            mMuisti=new Muisti();
        }

        // xml tiedostosta luettavat jutut muodostavat View-luokan ilmentymän
        return inflater.inflate(R.layout.fragment_paavalikko, parent, false);
    }

    //Tätä kutsutaan pian onCreateView metodin jälkeen. Kaikkien asetusten
    //määrittäminen laitetaan tänne
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {

        //Otetaan käyttöön xml-tiedostossa annettuja juttuja
        mJuuri=(LinearLayout) view.findViewById(R.id.paavalikkoSisalto);

        //Sitten horisontaaliseen juureen lisätään tarvittavat palstat
        mPalstat=new LinearLayout[mMuisti.annaPalstat()+1];
        for (int i=0; i<mMuisti.annaPalstat()+1; i++) {
            mPalstat[i]=new LinearLayout(view.getContext());
            mPalstat[i].setOrientation(LinearLayout.VERTICAL);
            mJuuri.addView(mPalstat[i]);
        }

        //Palstoihin lisätään vakiosisältö, eli otsikot ja painonapit.
        //Aloitetaan vasemmasta palstasta ja vakiosisältö ensin
        mBookmarks=new TextView(view.getContext());
        mBookmarks.setText("Bookmarks");
        mBookmarks.setTextSize(25);
        mPalstat[0].addView(mBookmarks);
        mLanguage=new ToggleButton(view.getContext());
        mLanguage.setTextOff("Finnish");
        mLanguage.setTextOn("English");
        mLanguage.setChecked(true);
        mLanguage.setTag(2001);
        mLanguage.setOnClickListener(new VakioNappi());
        mPalstat[0].addView(mLanguage);
        mGraphics=new ToggleButton(view.getContext());
        mGraphics.setTextOff("Use simple graphics");
        mGraphics.setTextOn("Use elaborate graphics");
        mGraphics.setChecked(true);
        mGraphics.setTag(2002);
        mGraphics.setOnClickListener(new VakioNappi());
        mPalstat[0].addView(mGraphics);
        mCreateBookmark=new Button(view.getContext());
        mCreateBookmark.setText("Create bookmark");
        mCreateBookmark.setTag(2003);
        mCreateBookmark.setOnClickListener(new VakioNappi());
        mPalstat[0].addView(mCreateBookmark);
        mHelp=new Button(view.getContext());
        mHelp.setText("Help");
        mHelp.setTag(2004);
        mHelp.setOnClickListener(new VakioNappi());
        mPalstat[0].addView(mHelp);
        mAbout=new Button(view.getContext());
        mAbout.setText("About");
        mAbout.setTag(2005);
        mAbout.setOnClickListener(new VakioNappi());
        mPalstat[0].addView(mAbout);

        //Sitten lisätään sisältöä muisti-luokan mukaisesti. Kirjanmerkit:
        if (mMuisti.onkoKirjanMerkkia(0)) {
            mBookmark1=new Button(view.getContext());
            mBookmark1.setText("Bookmark 1");
            mBookmark1.setTag(2006);
            mBookmark1.setOnClickListener(new VakioNappi());
            mPalstat[0].addView(mBookmark1);
        }
        if (mMuisti.onkoKirjanMerkkia(1)) {
            mBookmark2=new Button(view.getContext());
            mBookmark2.setText("Bookmark 2");
            mBookmark2.setTag(2007);
            mBookmark2.setOnClickListener(new VakioNappi());
            mPalstat[0].addView(mBookmark2);
        }
        if (mMuisti.onkoKirjanMerkkia(2)) {
            mBookmark3=new Button(view.getContext());
            mBookmark3.setText("Bookmark 3");
            mBookmark3.setTag(2008);
            mBookmark3.setOnClickListener(new VakioNappi());
            mPalstat[0].addView(mBookmark3);
        }
        if (mMuisti.onkoKirjanMerkkia(3)) {
            mBookmark4=new Button(view.getContext());
            mBookmark4.setText("Bookmark 4");
            mBookmark4.setTag(2009);
            mBookmark4.setOnClickListener(new VakioNappi());
            mPalstat[0].addView(mBookmark4);
        }
        if (mMuisti.onkoKirjanMerkkia(4)) {
            mBookmark5=new Button(view.getContext());
            mBookmark5.setText("Bookmark 5");
            mBookmark5.setTag(2010);
            mBookmark5.setOnClickListener(new VakioNappi());
            mPalstat[0].addView(mBookmark5);
        }
        if (mMuisti.onkoKirjanMerkkia(5)) {
            mBookmark6=new Button(view.getContext());
            mBookmark6.setText("Bookmark 6");
            mBookmark6.setTag(2011);
            mBookmark6.setOnClickListener(new VakioNappi());
            mPalstat[0].addView(mBookmark6);
        }
        if (mMuisti.onkoKirjanMerkkia(6)) {
            mBookmark7=new Button(view.getContext());
            mBookmark7.setText("Bookmark 7");
            mBookmark7.setTag(2012);
            mBookmark7.setOnClickListener(new VakioNappi());
            mPalstat[0].addView(mBookmark7);
        }
        if (mMuisti.onkoKirjanMerkkia(7)) {
            mBookmark8=new Button(view.getContext());
            mBookmark8.setText("Bookmark 8");
            mBookmark8.setTag(2013);
            mBookmark8.setOnClickListener(new VakioNappi());
            mPalstat[0].addView(mBookmark8);
        }
        if (mMuisti.onkoKirjanMerkkia(8)) {
            mBookmark9=new Button(view.getContext());
            mBookmark9.setText("Bookmark 9");
            mBookmark9.setTag(2014);
            mBookmark9.setOnClickListener(new VakioNappi());
            mPalstat[0].addView(mBookmark9);
        }

        //alustetaan mTiedostoNimet, joita voi olla enintään 2000 riippumatta siitä,
        //ovatko teksti- vai CAD-tiedostoja
        mTiedostoNimet=new String[2000];

        //Siirrytään seuraaviin palstoihin vasemmalta oikealle. 3D-palstoja
        //on enintään 5
        boolean luotu=false;
        int index1=0, index2=0;
        mTiedostot=new Button[mMuisti.annaTiedostojenMaara()];
        for (int i=0; i<mMuisti.annaTiedostojenMaara(); i++) {
            if (mMuisti.annaValikkoSijainti(i)==1 && mMuisti.annaOnko3D(i)) {

                //jos palstaan ei ole vielä lisätty, lisätään otsikko
                if (luotu!=true) {
                    index1++;
                    m3D1=new TextView(view.getContext());
                    m3D1.setText("3D 1");
                    m3D1.setTextSize(25);
                    mPalstat[index1].addView(m3D1);
                    luotu=true;
                }

                //luodaan sitten varsinainen valikkokohta
                mTiedostot[index2]=new Button(view.getContext());
                mTiedostot[index2].setText(mMuisti.annaTiedostonNimi(i));
                mTiedostot[index2].setEnabled(mMuisti.annaOnkoAsetettu(i));
                mTiedostot[index2].setTag(mNimiLaskuri);
                mNimiLaskuri++;
                mTiedostot[index2].setOnClickListener(new CADNappi());
                if (mMuisti.annaOnkoNakyva(i)) {
                    mTiedostot[index2].setVisibility(View.VISIBLE);
                } else {
                    mTiedostot[index2].setVisibility(View.INVISIBLE);
                }
                mPalstat[index1].addView(mTiedostot[index2]);
                index2++;
            }
        }
        luotu=false;
        for (int i=0; i<mMuisti.annaTiedostojenMaara(); i++) {
            if (mMuisti.annaValikkoSijainti(i)==2 && mMuisti.annaOnko3D(i)) {

                 //jos palstaan ei ole vielä lisätty, lisätään otsikko
                if (luotu!=true) {
                    index1++;
                    m3D2=new TextView(view.getContext());
                    m3D2.setText("3D 2");
                    m3D2.setTextSize(25);
                    mPalstat[index1].addView(m3D2);
                    luotu=true;
                }

                //luodaan sitten varsinainen valikkokohta
                mTiedostot[index2]=new Button(view.getContext());
                mTiedostot[index2].setText(mMuisti.annaTiedostonNimi(i));
                mTiedostot[index2].setEnabled(mMuisti.annaOnkoAsetettu(i));
                mTiedostot[index2].setTag(mNimiLaskuri);
                mTiedostoNimet[mNimiLaskuri]=mMuisti.annaTiedostonNimi(i);
                mNimiLaskuri++;
                mTiedostot[index2].setOnClickListener(new CADNappi());
                if (mMuisti.annaOnkoNakyva(i)) {
                    mTiedostot[index2].setVisibility(View.VISIBLE);
                } else {
                    mTiedostot[index2].setVisibility(View.INVISIBLE);
                }
                mPalstat[index1].addView(mTiedostot[index2]);
                index2++;
            }
        }
        luotu=false;
        for (int i=0; i<mMuisti.annaTiedostojenMaara(); i++) {
            if (mMuisti.annaValikkoSijainti(i)==3 && mMuisti.annaOnko3D(i)) {

                //jos palstaan ei ole vielä lisätty, lisätään otsikko
                if (luotu!=true) {
                    index1++;
                    m3D3=new TextView(view.getContext());
                    m3D3.setText("3D 3");
                    m3D3.setTextSize(25);
                    mPalstat[index1].addView(m3D3);
                    luotu=true;
                }

                //luodaan sitten varsinainen valikkokohta
                mTiedostot[index2]=new Button(view.getContext());
                mTiedostot[index2].setText(mMuisti.annaTiedostonNimi(i));
                mTiedostot[index2].setEnabled(mMuisti.annaOnkoAsetettu(i));
                mTiedostot[index2].setTag(mNimiLaskuri);
                mTiedostoNimet[mNimiLaskuri]=mMuisti.annaTiedostonNimi(i);
                mNimiLaskuri++;
                mTiedostot[index2].setOnClickListener(new CADNappi());
                if (mMuisti.annaOnkoNakyva(i)) {
                    mTiedostot[index2].setVisibility(View.VISIBLE);
                } else {
                    mTiedostot[index2].setVisibility(View.INVISIBLE);
                }
                mPalstat[index1].addView(mTiedostot[index2]);
                index2++;
            }
        }
        luotu=false;
        for (int i=0; i<mMuisti.annaTiedostojenMaara(); i++) {
            if (mMuisti.annaValikkoSijainti(i)==4 && mMuisti.annaOnko3D(i)) {

                //jos palstaan ei ole vielä lisätty, lisätään otsikko
                if (luotu!=true) {
                    index1++;
                    m3D4=new TextView(view.getContext());
                    m3D4.setText("3D 4");
                    m3D4.setTextSize(25);
                    mPalstat[index1].addView(m3D4);
                    luotu=true;
                }

                //luodaan sitten varsinainen valikkokohta
                mTiedostot[index2]=new Button(view.getContext());
                mTiedostot[index2].setText(mMuisti.annaTiedostonNimi(i));
                mTiedostot[index2].setEnabled(mMuisti.annaOnkoAsetettu(i));
                mTiedostot[index2].setTag(mNimiLaskuri);
                mTiedostoNimet[mNimiLaskuri]=mMuisti.annaTiedostonNimi(i);
                mNimiLaskuri++;
                mTiedostot[index2].setOnClickListener(new CADNappi());
                if (mMuisti.annaOnkoNakyva(i)) {
                    mTiedostot[index2].setVisibility(View.VISIBLE);
                } else {
                    mTiedostot[index2].setVisibility(View.INVISIBLE);
                }
                mPalstat[index1].addView(mTiedostot[index2]);
                index2++;
            }
        }
        luotu=false;
        for (int i=0; i<mMuisti.annaTiedostojenMaara(); i++) {
            if (mMuisti.annaValikkoSijainti(i)==5 && mMuisti.annaOnko3D(i)) {

                //jos palstaan ei ole vielä lisätty, lisätään otsikko
                if (luotu!=true) {
                    index1++;
                    m3D5=new TextView(view.getContext());
                    m3D5.setText("3D 5");
                    m3D5.setTextSize(25);
                    mPalstat[index1].addView(m3D5);
                    luotu=true;
                }

                //luodaan sitten varsinainen valikkokohta
                mTiedostot[index2]=new Button(view.getContext());
                mTiedostot[index2].setText(mMuisti.annaTiedostonNimi(i));
                mTiedostot[index2].setEnabled(mMuisti.annaOnkoAsetettu(i));
                mTiedostot[index2].setTag(mNimiLaskuri);
                mTiedostoNimet[mNimiLaskuri]=mMuisti.annaTiedostonNimi(i);
                mNimiLaskuri++;
                mTiedostot[index2].setOnClickListener(new CADNappi());
                if (mMuisti.annaOnkoNakyva(i)) {
                    mTiedostot[index2].setVisibility(View.VISIBLE);
                } else {
                    mTiedostot[index2].setVisibility(View.INVISIBLE);
                }
                mPalstat[index1].addView(mTiedostot[index2]);
                index2++;
            }
        }
        luotu=false;
/*

A part of code removed to save space

                        */
    }
}

Muisti.java:

package com.mannonen.tasavalta;

import java.io.Serializable;

public class Muisti implements Serializable {

    //Alla olevat ovat kirjanmerkkejä varten
    private double[][] kirjanMerkkiOrientaatioD;
    private String[] kirjanMerkkiTiedostoD;
    private double[][] kirjanMerkkiOrientaatioT;
    private String[] kirjanMerkkiTiedostoT;
    private boolean[] kirjanMerkkiOnkoAsetettu= {false, false, false, false,
        false, false, false, false, false};

    //Alla olevat ovat valikkomäärittelyitä varten
    private String[] tiedostoTietoNimi= {"Sampo", "Frame_of_Sampo", "Cell",
        "Liike", "Liike2", "Liike3", "Liikesampo", "Pilvi1", "Pilvi2",
        "Universe", "Logic", "Cosmology", "Mathematics", "Relativity",
        "Reality", "Reality2", "Viides", "Test", "Fft", "FloatTaulukko",
        "Listat"};
    private int[] tiedostoTietoValikkoSijainti= {1, 1, 1, 1, 1, 1, 1, 1, 1,
        1, 1, 3, 2, 2, 3, 3, 5, 5, 5, 5, 5};
    private boolean[] tiedostoTietoOnkoNakyva={true, true, true, true, true,
        true, true, true, true, true, true, true, true, false, true,
        true, false, true, true, true, true};
    private boolean[] tiedostoTietoOnkoAsetettu= {true, true, true, true,
        true, true, true, true, true, true, true, false, true, true,
        true, true, true, true, true, true, true};
    private boolean[] tiedostoTietoOnko3D= {true, true, true, true, true,
        true, true, true, true, false, false, false, false, false,
        false, false, false, false, false, false, false};
    private int tiedostoTietoTiedostoTietoja=21;

    //Alla oleva ilmoittaa palstojen kokonaismäärän ilman Bookmarks-palstaa
    private int palstoja=5;

    public Muisti() {}
    public int annaPalstat() {return palstoja;}
    public boolean onkoKirjanMerkkia(int num) {return kirjanMerkkiOnkoAsetettu[num];}
    public int annaTiedostojenMaara() {return tiedostoTietoTiedostoTietoja;}
    public int annaValikkoSijainti(int num) {return tiedostoTietoValikkoSijainti[num];}
    public boolean annaOnko3D(int num) {return tiedostoTietoOnko3D[num];}
    public String annaTiedostonNimi(int num) {return tiedostoTietoNimi[num];}
    public boolean annaOnkoAsetettu(int num) {return tiedostoTietoOnkoAsetettu[num];}
    public boolean annaOnkoNakyva(int num) {return tiedostoTietoOnkoNakyva[num];}

}

我需要清新的白色或灰色背景。我已经通过 Android Studio 用模拟器和 Eclipse 用设备测试了这段代码,两者都存在问题。

我能做什么?

【问题讨论】:

    标签: java android xml canvas scrollview


    【解决方案1】:

    这里的问题是,您在滚动视图后面查看具有透明背景的片段,有太多代码需要查看,但如果您不打算调用 fragmentManager.add 两次,则必须搜索是否只读取相同的一个你想要的。

    如果您打算使用添加(并且不能使用替换),则必须将滚动视图的背景颜色设置为不透明。

    在方向更改时,会保留片段,因此您需要将代码更改为 if (savedInstance != null) fragment.add 否则它将在方向更改时在顶部添加另一个

    【讨论】:

    • 让我们继续写... 我的代码只包含一个 fragmentTransaction.add 但没有 fragmentManager.add (据我所知)。那些 fragmentManager.add 调用是否在我编写的代码之外?是的,我必须动态地将按钮添加到视图中,因为它们的数量很谨慎。此外,我发现,只要我不从纵向切换到横向,或者反之亦然,我上面的代码就可以很好地工作。它是否会给您一些可能出现问题的症状?
    • 在方向改变时,片段会被保留,因此您需要将代码更改为 if savedInstance != null fragment.add 否则它将在方向改变时在顶部添加另一个
    【解决方案2】:

    问题是由于 onCreate 方法中缺少 if 子句:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_aktiviteetti1);
    
        //päävalikko on fragmentissa, joka pitää lisätä aktiviteettiin heti,
        //jollei sitä ole jo lisätty
        if (savedInstanceState==null) {     //this was missing original code
            FragmentManager fragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fragmentti1 = new PaaValikko();
            fragmentTransaction.add(R.id.aktiviteetti1Sisalto, fragmentti1);
            fragmentTransaction.commit();
        }
    
    }
    

    谢谢 Marcos,没有你的帮助我找不到这个 bug!

    结案。

    【讨论】:

      猜你喜欢
      • 2020-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 2020-04-29
      • 2020-01-04
      相关资源
      最近更新 更多