» »

[android] crash

[android] crash

messi ::

Mi prosim lahko kdo razloži tile napake, zakaj se mi aplikacija crasha, sicer se opravičujem ker je koda tako dolga ampak ne morem pomagat.. Hvala.


09-04 11:44:43.798: D/AndroidRuntime(2235): Shutting down VM
09-04 11:44:43.798: W/dalvikvm(2235): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
09-04 11:44:45.248: E/AndroidRuntime(2235): FATAL EXCEPTION: main
09-04 11:44:45.248: E/AndroidRuntime(2235): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.pii/com.example.pii.Draw}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.app.ActivityThread.access$600(ActivityThread.java:130)
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.os.Handler.dispatchMessage(Handler.java:99)
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.os.Looper.loop(Looper.java:137)
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.app.ActivityThread.main(ActivityThread.java:4745)
09-04 11:44:45.248: E/AndroidRuntime(2235): at java.lang.reflect.Method.invokeNative(Native Method)
09-04 11:44:45.248: E/AndroidRuntime(2235): at java.lang.reflect.Method.invoke(Method.java:511)
09-04 11:44:45.248: E/AndroidRuntime(2235): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
09-04 11:44:45.248: E/AndroidRuntime(2235): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-04 11:44:45.248: E/AndroidRuntime(2235): at dalvik.system.NativeStart.main(Native Method)
09-04 11:44:45.248: E/AndroidRuntime(2235): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
09-04 11:44:45.248: E/AndroidRuntime(2235): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:215)
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.app.Activity.requestWindowFeature(Activity.java:3225)
09-04 11:44:45.248: E/AndroidRuntime(2235): at com.example.pii.Draw.onCreate(Draw.java:71)
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.app.Activity.performCreate(Activity.java:5008)
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
09-04 11:44:45.248: E/AndroidRuntime(2235): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
09-04 11:44:45.248: E/AndroidRuntime(2235): ... 11 more

Koda aplikacije:

package com.example.pii;




import android.app.Activity;
import android.view.WindowManager.LayoutParams;
import android.content.ContentResolver;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.Settings.SettingNotFoundException;
import android.provider.Settings.System;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.Toast;

public class Draw extends Activity  {
 
    SeekBar bar;
    static float discrete=0; 
    float start=0; 
    float end=100; 
    float start_pos=0; 
    int start_position=0; 
    //UI objects//  
    //the seek bar variable  
    private SeekBar brightbar;  
  
    //a variable to store the system brightness  
    private int brightness;  
    //the content resolver used as a handle to the system's settings  
    private ContentResolver cResolver;  
    //a window object, that will store a reference to the current window  
    private Window window;  
    /** Menu ID for the command to clear the window. */
    private static final int CLEAR_ID = Menu.FIRST;
    /** Menu ID for the command to toggle fading. */
    private static final int SAMPLES_ID = Menu.FIRST+1;
    /** Menu ID for about **/
    private static final int ABOUT_ID = Menu.FIRST+2;

    /** The view responsible for drawing the window. */
    TesterView mView;
 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Set full screen view
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        		WindowManager.LayoutParams.FLAG_FULLSCREEN);   
        
        // Create and attach the view that is responsible for painting.
        mView = new TesterView(this, null, 0);
        setContentView(mView);
        mView.requestFocus();
      
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                                         WindowManager.LayoutParams.FLAG_FULLSCREEN);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        

   
   TabHost tabHost=(TabHost)findViewById(R.id.tabHost);
   tabHost.setup();

   
   TabSpec spec1=tabHost.newTabSpec("Tab 1");
   spec1.setContent(R.id.tab1);
   spec1.setIndicator("Tab 1",getResources().getDrawable(R.drawable.set));

   TabSpec spec2=tabHost.newTabSpec("Tab 2");
   spec2.setIndicator("Tab 2",getResources().getDrawable(R.drawable.set));
   spec2.setContent(R.id.tab2);

   TabSpec spec3=tabHost.newTabSpec("Tab 3");
   spec3.setIndicator("Tab 3",getResources().getDrawable(R.drawable.set));
   spec3.setContent(R.id.tab3);
   
   tabHost.addTab(spec1);
   tabHost.addTab(spec2);
   tabHost.addTab(spec3);

   Button knof;
   knof=(Button)findViewById(R.id.button1);
   knof.setOnClickListener(new View.OnClickListener() {
    

	 
	@Override
       public void onClick(View v) {
		ColorPickerDialog aa;
	
		//new ColorPickerDialog(this, this, DROIDS_COLOR_KEY, a.getInt(DROIDS_COLOR_KEY, DROIDS_COLOR_DEFAULT), DROIDS_COLOR_DEFAULT).show();
		// ((PreferenceScreen)this.findPreference(SETTINGS_KEY)).getEditor().putInt(key, color).commit();
		aa = new ColorPickerDialog(null,null,"",0,0);
		  setContentView(R.layout.io);
	//	aa.requestFocus();
		
		
	
	} });
   
  


//začetek sekkbara
   start=0;      //you need to give starting value of SeekBar 
end=10;         //you need to give end value of SeekBar 
   start_pos=5;    //you need to give starting position value of SeekBar 

   start_position=(int) (((start_pos-start)/(end-start))*10); 
   discrete=start_pos; 
   SeekBar seek=(SeekBar) findViewById(R.id.seekBar1); 
   seek.setProgress(start_position); 
   seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { 

       @Override 
       public void onStopTrackingTouch(SeekBar seekBar) { 
           // TODO Auto-generated method stub 
           Toast.makeText(getBaseContext(), "discrete = "+String.valueOf(discrete), Toast.LENGTH_SHORT).show(); 
       } 
 

       @Override 
       public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) { 
           // TODO Auto-generated method stub 
           // To convert it as discrete value 
           float temp=progress; 
           float dis=end-start; 
           discrete=(start+((temp/10)*dis)); 
          

       }
       

	@Override
	public void onStartTrackingTouch(SeekBar seekBar) {
		// TODO Auto-generated method stub
		
	} 
   }); 
//konec seek bara za velikost ..
   // start bright
   //get the seek bar from main.xml file
   brightbar = (SeekBar) findViewById(R.id.sb_brightbar);
   
   //get the content resolver
   cResolver = getContentResolver();
   
   //get the current window
   window = getWindow();
   
   //seek bar settings//
   //sets the range between 0 and 255
   brightbar.setMax(255);
   //set the seek bar progress to 1
   brightbar.setKeyProgressIncrement(1);
 
   try 
   {
   	//get the current system brightness
   	brightness = System.getInt(cResolver, System.SCREEN_BRIGHTNESS);
	} 
   catch (SettingNotFoundException e) 
	{
   	//throw an error case it couldn't be retrieved
		Log.e("Error", "Cannot access system brightness");
		e.printStackTrace();
	}
	
	//sets the progress of the seek bar based on the system's brightness
	brightbar.setProgress(brightness);

	//register OnSeekBarChangeListener, so it can actually change values
	brightbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
	{
		@Override
		public void onStopTrackingTouch(SeekBar seekBar) 
		{
			//set the system brightness using the brightness variable value
			System.putInt(cResolver, System.SCREEN_BRIGHTNESS, brightness);
			
			//preview brightness changes at this window
			//get the current window attributes
			LayoutParams layoutpars = window.getAttributes();
			//set the brightness of this window
			layoutpars.screenBrightness = brightness / (float)255;
			//apply attribute changes to this window
			window.setAttributes(layoutpars);
		}
		
		@Override
		public void onStartTrackingTouch(SeekBar seekBar) 
		{
		}
		
		@Override
		public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 
		{
			//sets the minimal brightness level
			//if seek bar is 20 or any value below
			if(progress<=20)
			{
				//set the brightness to 20
				brightness=20;
			}
			else //brightness is greater than 20
			{
				//sets brightness variable based on the progress bar 
				brightness = progress;
			}
		}
	});	
 //zaključek bright
  
	 super.onCreate(savedInstanceState);   
    }// zaključuje on create


	public static float getState() {
		// TODO Auto-generated method stub
		return discrete;
	}





@Override public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, CLEAR_ID, 0, "Clear");
    menu.add(0, SAMPLES_ID, 0, "Samples").setCheckable(true);
    menu.add(0, ABOUT_ID, 0, "Version "+this.getString(R.string.app_name)); /* idea from http://www.connorgarvey.com/blog/?p=9 */
    return super.onCreateOptionsMenu(menu);
}

@Override public boolean onPrepareOptionsMenu(Menu menu) {
 //   menu.findItem(SAMPLES_ID).setChecked(mSamples);
    return super.onPrepareOptionsMenu(menu);
}

@Override public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case CLEAR_ID:
            mView.clear();
            return true;
        case SAMPLES_ID:
        	mView.bShowSamples = !mView.bShowSamples;
         	return true;
        case ABOUT_ID:
        	return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

@Override protected void onResume() {
    super.onResume();
    // If fading mode is enabled, then as long as we are resumed we want
    // to run pulse to fade the contents.
}

@Override protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    // Save away the fading state to restore if needed later.  Note that
    // we do not currently save the contents of the display.
}

@Override protected void onPause() {
    super.onPause();
    // Make sure to never run the fading pulse while we are paused or
    // stopped.
  }


private Handler mHandler = new Handler() {
    @Override public void handleMessage(Message msg) {
        switch (msg.what) {
            // Upon receiving the fade pulse, we have the view perform a
            // fade and then enqueue a new message to pulse at the desired
            // next time.
            default:
                super.handleMessage(msg);
        }
    }
};


}


in še clas..

package com.example.pii;



import java.util.ArrayList;
import java.util.List;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Rect;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;



public class TesterView extends View {
	private static final int MAXFINGERS = 20; // count the toes too! 

	private Bitmap mBitmap;
	private Canvas mCanvas;
	private final Rect mRect = new Rect();
	private final Paint mPaint;
	private float mCurX;
	private float mCurY;
	private float[] mPrevX = new float[MAXFINGERS]; // previous values of x,y to draw line
	private float[] mPrevY = new float[MAXFINGERS];
	
	public boolean bShowSamples = true;
	
	public TesterView(Context c, AttributeSet attrs, int defStyle) {
		super(c,attrs,defStyle);
		setFocusable(true);
		mPaint = new Paint();
		mPaint.setAntiAlias(true);
		mPaint.setARGB(255, 255, 255, 255);
	}

	public TesterView(Context c, AttributeSet attrs) {
		 this(c, attrs, 0);
	}
	public TesterView(Context c) {
		 this(c, null, 0);
	}
	/* if clear command under App's view Menu is used */
	public void clear() {
		if (mCanvas != null) {
			mPaint.setARGB(0xff, 255, 255, 255);
			mCanvas.drawPaint(mPaint);
			invalidate();
		}
	}

	@Override protected void onSizeChanged(int w, int h, int oldw,
			int oldh) {
		int curW = mBitmap != null ? mBitmap.getWidth() : 0;
		int curH = mBitmap != null ? mBitmap.getHeight() : 0;
		if (curW >= w && curH >= h) {
			return;
		}

		if (curW < w) curW = w;
		if (curH < h) curH = h;

		Bitmap newBitmap = Bitmap.createBitmap(curW, curH,
				Bitmap.Config.RGB_565);
		newBitmap.eraseColor(Color.WHITE);  /* screen goes white */
		Canvas newCanvas = new Canvas();
		newCanvas.setBitmap(newBitmap);
		if (mBitmap != null) {
			newCanvas.drawBitmap(mBitmap, 0, 0,   null); 
		} 
		mBitmap = newBitmap;
		mCanvas = newCanvas;	
			
		/* initialize previous finger locations so we know later they need to be filled for the first time */
		for (int finger=0; finger<MAXFINGERS; finger++){
			mPrevX[finger]=-1;
			mPrevY[finger]=-1;
		}
	}

	@Override protected void onDraw(Canvas canvas) {
		if (mBitmap != null) {
			canvas.drawBitmap(mBitmap, 0, 0, null);
		} 
	}

	@Override public boolean onTouchEvent(MotionEvent event) {
		int action = event.getActionMasked();
        int numPtrs;
		switch (action) {

		case MotionEvent.ACTION_DOWN:  /* primary pointer */
		case MotionEvent.ACTION_POINTER_DOWN: /* any subsequent pointer */
		    numPtrs = event.getPointerCount();
			for (int finger = 0; finger < numPtrs; finger++) {
				mPrevX[finger] = mPrevY[finger] = -1;
			}
			break;
		case MotionEvent.ACTION_MOVE: /* any number of pointers move */
			int N = event.getHistorySize();
			numPtrs = event.getPointerCount();
			for (int histndx = 0; histndx < N; histndx++) {
				for (int finger = 0; finger < numPtrs; finger++) { 
					mCurX = event.getHistoricalX(finger, histndx);
					mCurY = event.getHistoricalY(finger, histndx);
					drawPoint(mCurX, mCurY,
							event.getHistoricalPressure(finger, histndx),
							event.getHistoricalSize(finger, histndx), finger); 
				}
			}  
			for (int finger = 0; finger < numPtrs; finger++) {
				mCurX = event.getX(finger);
				mCurY = event.getY(finger);
				drawPoint(mCurX, mCurY, event.getPressure(finger), event.getSize(finger),finger);
			} 
			break;
		case MotionEvent.ACTION_POINTER_UP:
		case MotionEvent.ACTION_UP: /* all pointers are up */
		case MotionEvent.ACTION_CANCEL: 

			for (int finger=0; finger<MAXFINGERS; finger++){
				mPrevX[finger]=-1;
				mPrevY[finger]=-1;
			}

			break;
		}

		return true;
	}
	
	private void drawLine(int finger) {
		mPaint.setARGB(255,0,0,255);  /* blue */
		mCanvas.drawLine(mPrevX[finger],mPrevY[finger],mCurX,mCurY,mPaint);
	}
	
	private void drawPoint(float x, float y, float pressure, float width, int finger) {
		//Log.i("TouchPaint", "Drawing: " + x + "x" + y + " p="
		//        + pressure + " width=" + width);
	
		int lowX,lowY,highX,highY;
		if (mBitmap != null) {
			float radius = (float) 2.0; 		
			mPaint.setARGB(255,255,0,0);  
			if (bShowSamples)
				mCanvas.drawCircle(x, y, radius, mPaint);  // current point
			if ((mPrevX[finger]==-1 && mPrevY[finger]==-1)) { /* we don't need to draw a line */
				mPrevX[finger] = x;
				mPrevY[finger] = y;
				mRect.set((int) (x - 3*radius), (int) (y - 3*radius),
	                      (int) (x + 3*radius), (int) (y + 3*radius));
			} else {
				/* we do need to draw line as we have a valid previous location */
				drawLine(finger);
				if (mPrevX[finger] <= mCurX){ 
					lowX = (int) (mPrevX[finger] - 3*radius);
					highX = (int) (mCurX + 3*radius); 
				} else {
					lowX = (int) (mCurX - 3*radius);
					highX = (int) (mPrevX[finger] + 3*radius); 
				}
				
				if (mPrevY[finger] <= mCurY){ 
					lowY = (int) (mPrevY[finger] - 3*radius);
					highY = (int) (mCurY + 3*radius); 
				} else {
					lowY = (int) (mCurY - 3*radius);
					highY = (int) (mPrevY[finger] + 3*radius); 
				}
				mRect.set(lowX,lowY,highX,highY);
				mPrevX[finger] = mCurX;
				mPrevY[finger] = mCurY;
			}
			
	    
			invalidate(mRect); 
		}
	}
	
	
}

Dejcc ::

requestFeature() must be called before adding content

v 5. vrstici ti piše napako. Popravi metodo onCreate

pzagor2 ::

V Activity-ju Draw v vrstici 71 kličeš "requestWindowFeature(Window.FEATURE_NO_TITLE);" za setContentView(mView); kar ni dovoljeno. Pa če prav vidim maš podvojeno 60 in 71 vrstico + še nakaj drugih vrstic.

messi ::

Hvala za pomoč sicer je bilo napaka v xml kodi
<com.example.pii.TesterView v tem ;)
Je bil star ime. Drugače me pa zanima je tale programeranje praviln in če so poiskane prave rešitve, ali je bolj špageti. In če je slab če ima kdo kako izboljšavo v mislih mi naj porsim pove...Hvala, vsem za pomoč

messi ::

Moogoče še to sedaj sem zamenjal setcontientview(R.layout.prvastran.xml), pa kar ne dela več clear in menjave vzorcev ;( prej je bilo setcontientview(mView)

messi ::

Da mogoče bolje razložim dodajal sem tab, spacebare in še gumbe ki sem jih postavil na drugo stran pri tem sem pa ogromno stvari pomeš, ker sedaj setcontientview ni več z mView ampak je z prvastran.xml

messi ::

kako lahko 1 sliko naložim na simulator kje to naredim.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Android - Začetnik

Oddelek: Programiranje
111717 (1042) hurlimannxt
»

Programiranje problem android

Oddelek: Programiranje
51105 (870) g333kk
»

[Android] Aplikacija se zruši

Oddelek: Programiranje
6751 (588) g333kk
»

android črta

Oddelek: Programiranje
412291 (1562) g333kk
»

[android] vstavljanje slike

Oddelek: Programiranje
71156 (1053) messi

Več podobnih tem