Autore Topic: Errore setText  (Letto 293 volte)

Offline lollobaldo

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy Core
  • Sistema operativo:
    Windows 7
Errore setText
« il: 04 Maggio 2014, 21:15:10 CEST »
0
Buongiorno a tutti questo è il primo post che scrivo, quindi scusate se sbaglio sezione o altro!
Stavo sviluppando un activity che deve leggere un file txt e uno dalla sharedPreferences e metterli come text in una textview ma ho riscontrato un errore quando l'ho eseguita sul mio galaxy core. L'errore è quando faccio operazioni sulla textview, perchè ho anche provato semplicemente a cambiarle la dimensione del font da java ma dava errore.
Se eseguo il public void come onclick e quindi con argomenti (View view) non ottengo l'errore ma a me serve che venga fatto al caricamento della pagina

Ecco il file dell'activity
Codice (Java): [Seleziona]
package com.example.impostazioni;

import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.text.Html;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class Ac_Buongiorno extends ActionBarActivity {
       
        public static final String PR_SETT = "MyPrefsFile";
        public static final String US_ANON = "Mister X";
       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.ac_buongiorno);
                imposta();
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {

                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, 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_setting) {
                        return true;
                }
                return super.onOptionsItemSelected(item);
        }

        /**
         * A placeholder fragment containing a simple view.
         */

        public static class PlaceholderFragment extends Fragment {

                public PlaceholderFragment() {
                }

                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                Bundle savedInstanceState) {
                        View rootView = inflater.inflate(R.layout.fr_buongiorno, container,
                                        false);
                        return rootView;
                }
        }

        public void imposta() {
                SharedPreferences settings = getSharedPreferences(PR_SETT, 0);
               String us_nome = settings.getString("US_NOME" , US_ANON);
               
            String buongiorno = Utils.readRawTextFile(this, R.raw.buongiorno);
                buongiorno = String.format(buongiorno , us_nome , "ciao");
                CharSequence Sbuongiorno = Html.fromHtml(buongiorno);
               
                TextView tw = (TextView)findViewById(R.id.textView1);
                tw.setText(Sbuongiorno);
               
        }

}

invece qui c'è fr_buongiorno.xml
Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >

    <TextView
       android:id="@+id/textView1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="ciaoooo" />

    <EditText
       android:id="@+id/editText2"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:ems="10"
       android:inputType="textCapCharacters" />

    <Button
       android:id="@+id/button1"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Button"
       android:onClick="metti" />

</LinearLayout>
Grazie a tutti

Offline CrotaNexus

  • Utente normale
  • ***
  • Post: 156
  • Vuolsi così colà dove si puote ciò che si vuole
  • Respect: +25
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    SimoneDev
  • Sistema operativo:
    Windows 8.1
Re:Errore setText
« Risposta #1 il: 04 Maggio 2014, 21:45:17 CEST »
0
Di che errore stiamo parlando? Posta il logcat.

Inviato dal mio Galaxy Nexus con Tapatalk 2

SimoneDev @ Google Play Store

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Errore setText
« Risposta #2 il: 05 Maggio 2014, 08:00:40 CEST »
0
Ciao,
Necessariamente ti da' errore.

Per trovare TextView tw
devi per forza fare:

TextView tw = (TextView)rootView .findViewById(R.id.textView1);

ma rootView è una variabile locale della classe PlaceholderFragment, per cui l'errore.

Ecco la soluzione (ben poco stiliticamente corretta)

e per piacere prima di chiamare imposta()
aggiungi/attacca necessariamente il Fragment, altrimenti avrai ancora errore.

Ciao

Codice (Java): [Seleziona]
public class Ac_Buongiorno extends ActionBarActivity {
       
        public static final String PR_SETT = "MyPrefsFile";
        public static final String US_ANON = "Mister X";
        public View rootView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.ac_buongiorno);
                imposta();
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {

                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.main, 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_setting) {
                        return true;
                }
                return super.onOptionsItemSelected(item);
        }

        /**
         * A placeholder fragment containing a simple view.
         */

        public static class PlaceholderFragment extends Fragment {

                public PlaceholderFragment() {
                }

                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                Bundle savedInstanceState) {
                        rootView = inflater.inflate(R.layout.fr_buongiorno, container,
                                        false);
                        return rootView;
                }
        }

        public void imposta() {
                SharedPreferences settings = getSharedPreferences(PR_SETT, 0);
               String us_nome = settings.getString("US_NOME" , US_ANON);
               
            String buongiorno = Utils.readRawTextFile(this, R.raw.buongiorno);
                buongiorno = String.format(buongiorno , us_nome , "ciao");
                CharSequence Sbuongiorno = Html.fromHtml(buongiorno);
               
                TextView tw = (TextView)rootView.findViewById(R.id.textView1);
                tw.setText(Sbuongiorno);
               
        }

}
« Ultima modifica: 05 Maggio 2014, 08:42:14 CEST da Maurizio Pietrantuono »