我有一个非常奇怪的问题,如下面的图片所示:
滚动前捕获顶部图片,滚动后捕获底部图片。 Android不会清除背景以擦除初始视图。如果我接受黑色背景,则可以解决此问题(可以通过激活注释的代码来解决此问题 android:background =“#111100”> infragment.xml),但我不会这样做。
fragment_paavalikko.xml:
<div>
<span>X</span>
<span>O</span>
<span>O</span>
</div>
<div>
<span></span>
<span>X</span>
<span></span>
</div>
<div>
<span></span>
<span></span>
<span>X</span>
</div>
activity_aktiviteetti1.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>
Activity1.java:
<?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>
PaaValikko.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();
}
Muisti.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
*/
}
}
我需要刷新白色或灰色背景。我已经使用模拟器在Android Studio上测试了此代码,并使用设备在Eclipse上测试了此代码,并且两者都存在问题。
我该怎么办?
答案 0 :(得分:1)
这里的问题是,您在透明背景的滚动视图后面查看一个片段,有太多代码要看,但是如果您不打算调用fragmentManager.add两次,那么您必须搜索是否只读取同一个片段你想要的。
如果要使用添加(不能使用替换),则必须为不透明的内容设置滚动视图的背景颜色。
在方向更改时,片段将保留,因此您需要将代码更改为if (savedInstance != null) fragment.add
,否则它将在方向更改的顶部添加另一个代码
答案 1 :(得分:0)
问题是由于onCreate方法中缺少if子句造成的:
谢谢马科斯,没有您的帮助,我找不到此错误!
案例已关闭。