Hjälp med att läsa en txt-fil Android Java

Permalänk

Hjälp med att läsa en txt-fil Android Java

Hej, jag behöver nu hjälp från alla fina Sweclockersmedlemmar då jag inte hittar någon annan bra lösning. Problemet ifråga är att jag vill ladda in en textfil och visa den i en TextView i samband med att användaren klickar på en knapp. Adresserna för filerna lagras i en ArrayList vid namn "List". Att generera detta i OnCreate var inga problem. Men när jag skulle göra samma sak i en OnClick så slutade det fungera. Se bifogad kod för hur jag har gjort.
Ps. ingen höjdare direkt på Java överhuvudtaget.

public class MainActivity extends Activity { TextView tvQuote; String sQuote; Button bRandom; ArrayList<Integer> List = new ArrayList<Integer>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFormat(PixelFormat.RGBA_8888); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); setContentView(R.layout.activity_main); List.add(R.raw.file); List.add(R.raw.file1); List.add(1, R.raw.file1); tvQuote = (TextView) findViewById(R.id.textView2); InputStream is = getResources().openRawResource(List.get(0)); try { sQuote = IOUtils.toString(is, "UTF-8"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { is.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } tvQuote.setText("" + sQuote); bRandom.setOnClickListener(new OnClickListener() { public void onClick(View v) { InputStream is = getResources().openRawResource(List.get(0)); try { sQuote = IOUtils.toString(is, "UTF-8"); } catch (IOException e) { e.printStackTrace(); } tvQuote.setText("" + sQuote); } }); } }

Permalänk
Hedersmedlem

Vad exakt är det som händer? Körde du copy-paste rakt av från det du gjorde i OnCreate?

Har du kollat att OnClickListener funkar?

Permalänk
Medlem

Du tilldelar aldrig bRandom något värde, som det ser ut nu så borde appen krascha vid bRandom.setOnClickListener()

EDIT:
Ett litet tips bara, du behöver inte använda två try/catch-satser, du kan slå ihop dom till en

try { sQuote = IOUtils.toString(is, "UTF-8"); is.close(); } catch (IOException e) { e.printStackTrace(); }

Dold text
Permalänk

Det är någonstans i OnClick som det hela börjar att strula. Det som händer är att applikationen kraschar när jag startar

Permalänk

Tack så mycket drewi, det var det som var det uppenbara felet. Återigen tack. Jag har suttit med det i två dagar utan något resultat.

Permalänk
Medlem

Sätt dig in i logcat så blir det lite enklare att debugga. När appen kraschar så printas det ut en långt felmeddelande i logcat som säger varför och (oftast) vilken rad i koden som den kraschat på

Jag antar att du använder eclipse, här är en video som visar lite grunder för logcat

Permalänk

Tack återigen, jag känner till logcat men har inte tillräckligt stor erfarenhet för att förstå den till fullo