Autore Topic: ProgressBar  (Letto 685 volte)

Offline jaco94++

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Github
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Play Store ID:
    JDL
  • Sistema operativo:
    Fedora
ProgressBar
« il: 06 Gennaio 2013, 11:42:14 CET »
0
Ho un problema a personalizzare la progressbar con un testo all'interno del mio programma, ho seguito il seguente codice che ho trovato in rete ma l'applicazione crasha immediatamente, come posso risolvere ?

Codice (Java): [Seleziona]
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.ProgressBar;

public class TextProgressBar extends ProgressBar
{
        private String ProgressText=new String();
        private int textColor=Color.WHITE;
        private float textSize=15;
       
        public TextProgressBar(Context context)
        {
                super(context);
                // TODO Auto-generated constructor stub
        }
       
        public TextProgressBar(Context context, AttributeSet attrs)
        {
            super(context, attrs);
        }

        public TextProgressBar(Context context, AttributeSet attrs, int defStyle)
        {
            super(context, attrs, defStyle);
        }

        @SuppressLint("DrawAllocation")
        @Override
        protected synchronized void onDraw(Canvas canvas)
        {
            super.onDraw(canvas);
            //create an instance of class Paint, set color and font size
            Paint textPaint = new Paint();
            textPaint.setAntiAlias(true);
            textPaint.setColor(textColor);
            textPaint.setTextSize(textSize);
            //In order to show text in a middle, we need to know its size
            Rect bounds = new Rect();
            textPaint.getTextBounds(ProgressText, 0, ProgressText.length(), bounds);
            //Now we store font size in bounds variable and can calculate it's position
            int x = getWidth() / 2 - bounds.centerX();
            int y = getHeight() / 2 - bounds.centerY();
            //drawing text with appropriate color and size in the center
            canvas.drawText(ProgressText, x, y, textPaint);
        }

        public String getText()
        {
            return ProgressText;
        }

        public synchronized void setText(String text)
        {
           if(!ProgressText.equals(new String()))
           {
                   this.ProgressText=text;
           }
           else
           {
                   this.ProgressText=new String();
           }
           postInvalidate();
        }

        public int getTextColor()
        {
            return textColor;
        }

        public synchronized void setTextColor(int textColor)
        {
            this.textColor = textColor;
            postInvalidate();
        }

        public float getTextSize()
        {
            return textSize;
        }

        public synchronized void setTextSize(float textSize)
        {
            this.textSize = textSize;
            postInvalidate();
        }
}

Nella mia Activity:

Codice (Java): [Seleziona]
Button Button1;
        EditText Etext1,Etext2,Etext3,Etext4;
        TextView Tview1;
        TextProgressBar ProgBar1;
       
        // **
        ProgressDialog CheckProgress=null;
        SharedPreferences settings;

        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_prtscn);
               
                settings = getSharedPreferences(Res.netDroidSettings,0); // Get SharedPreferences

                ProgBar1=(TextProgressBar)findViewById(R.id.progressBar1);
               
}

Il LogCat riporta:
Codice (Java): [Seleziona]
01-06 11:40:24.079: W/dalvikvm(1796): threadid=1: thread exiting with uncaught exception (group=0x40018560)
01-06 11:40:24.079: E/AndroidRuntime(1796): FATAL EXCEPTION: main
01-06 11:40:24.079: E/AndroidRuntime(1796): java.lang.RuntimeException: Unable to start activity ComponentInfo{netDroid.App/netDroid.App.Activity.PrtScn}: java.lang.ClassCastException: android.widget.ProgressBar
01-06 11:40:24.079: E/AndroidRuntime(1796):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at android.app.ActivityThread.access$1500(ActivityThread.java:123)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at android.os.Looper.loop(Looper.java:130)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at android.app.ActivityThread.main(ActivityThread.java:3835)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at java.lang.reflect.Method.invokeNative(Native Method)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at java.lang.reflect.Method.invoke(Method.java:507)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at dalvik.system.NativeStart.main(Native Method)
01-06 11:40:24.079: E/AndroidRuntime(1796): Caused by: java.lang.ClassCastException: android.widget.ProgressBar
01-06 11:40:24.079: E/AndroidRuntime(1796):     at netDroid.App.Activity.PrtScn.onCreate(PrtScn.java:83)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-06 11:40:24.079: E/AndroidRuntime(1796):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
01-06 11:40:24.079: E/AndroidRuntime(1796):     ... 11 more

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:ProgressBar
« Risposta #1 il: 06 Gennaio 2013, 13:47:33 CET »
0
La prima cosa che proverei è un CLEAN del progetto, perchè non è raro che i riferimenti non si aggiornino.

Se anche quello non risolve, posta anche l'XML così abbiamo il quadro completo su cui meditare altre possibili cause.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline jaco94++

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Github
    • Mostra profilo
  • Dispositivo Android:
    Nexus 4
  • Play Store ID:
    JDL
  • Sistema operativo:
    Fedora
Re:ProgressBar
« Risposta #2 il: 07 Gennaio 2013, 20:39:20 CET »
0
Colpa dell'xml non mi sono accorto di non aver cambiato ProgressBar in netDroid.App.GUI.TextProgressBar ora funziona tutto correttamente!
Grazie!