Wie kann ich einen int Wert aus meiner Activity in meiner View Classe benutzen?

  • Hallo Zusammen


    Ich habe hier meinen Code der Linien macht in zufälligen Farben. Nun hab ich 3 Buttons zum Layout hinzugefügt welche einen jeweiligen Wert besitzen, Button1 = 1, 2 =2 und 3 = 3, nun muss ich diese Werte in meiner View - Klasse aufrufen können und benutzen können um dort die Farbe zu verändern.
    Ich habe bereits etwas mit getter und setter, sowohl intents probiert, bin bis anhin aber erfolglos geblieben...
    Wäre um Hilfe dankbar!


    Hauptklasse


    HauptLayout

    Java
    <?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"	android:layout_width="match_parent"	android:layout_height="match_parent"	android:orientation="vertical" >	<com.example.drawproject.DrawArea	android:layout_width="match_parent"	android:layout_height="match_parent"	android:layout_below="@+id/button1" /><Button	android:id="@+id/button1"	android:layout_width="wrap_content"	android:layout_height="wrap_content"	android:layout_alignParentLeft="true"	android:layout_alignParentTop="true"	android:layout_marginLeft="84dp"	android:layout_marginTop="79dp"	android:text="Yellow" /><Button	android:id="@+id/button2"	android:layout_width="wrap_content"	android:layout_height="wrap_content"	android:layout_alignBaseline="@+id/button1"	android:layout_alignBottom="@+id/button1"	android:layout_marginLeft="165dp"	android:layout_toRightOf="@+id/button1"	android:text="Blue" /><Button	android:id="@+id/button3"	android:layout_width="wrap_content"	android:layout_height="wrap_content"	android:layout_alignBottom="@+id/button2"	android:layout_alignParentRight="true"	android:layout_marginRight="134dp"	android:text="Green" /></RelativeLayout>


    View Klasse


    Java
    package com.example.drawproject;import android.content.Context;import android.graphics.*;import android.util.AttributeSet;import android.util.SparseArray;import android.view.MotionEvent;import android.view.View;import java.util.ArrayList;import java.util.List;import java.util.Random;public class DrawArea extends View {private List<Stroke> _allStrokes; //all strokes that need to be drawnprivate SparseArray<Stroke> _activeStrokes; //use to retrieve the currently drawn strokesprivate Random _rdmColor = new Random();int count = 1;public DrawArea(Context context, AttributeSet attrs) {	super(context, attrs);	_allStrokes = new ArrayList<Stroke>();	_activeStrokes = new SparseArray<Stroke>();	setFocusable(true);	setFocusableInTouchMode(true);}public void onDraw(Canvas canvas) {	if (_allStrokes != null) {    	for (Stroke stroke: _allStrokes) {        	if (stroke != null) {            	Path path = stroke.getPath();            	Paint painter = stroke.getPaint();            	if ((path != null) && (painter != null)) {                	if(count%2 != 0){                	canvas.drawPath(path, painter);                	}            	}        	}    	}	}}@Overridepublic boolean onTouchEvent(MotionEvent event) {	final int action = event.getActionMasked();	final int pointerCount = event.getPointerCount();	switch (action) {    	case MotionEvent.ACTION_DOWN: {        	count++;        	if(count%2 != 1)        	{pointDown((int)event.getX(), (int)event.getY(), event.getPointerId(0));        	break;        	}        	if (count%2 != 0){            	for (int pc = 0; pc < pointerCount; pc++) {                	pointDown((int)event.getX(pc), (int)event.getY(pc), event.getPointerId(pc));    	}        	}    	}    	case MotionEvent.ACTION_MOVE: {        	break;    	}    	case MotionEvent.ACTION_UP: {        	break;    	}	}	invalidate();	return true;}private void pointDown(int x, int y, int id) {	if(count%2 !=1){	//create a paint with random color	Paint paint = new Paint();	paint.setStyle(Paint.Style.STROKE);	paint.setStrokeWidth(10);	paint.setColor(_rdmColor.nextInt()); //Here should the values be added!	//create the Stroke	Point pt = new Point(x, y);	Stroke stroke = new Stroke(paint);	stroke.addPoint(pt);	_activeStrokes.put(id, stroke);	_allStrokes.add(stroke);	}	if (count%2 != 0){	//retrieve the stroke and add new point to its path	Stroke stroke = _activeStrokes.get(id);	if (stroke != null) {    	Point pt = new Point(x, y);    	stroke.addPoint(pt);	}	}}}


    Zusatz View Klasse

    Java
    package com.example.drawproject;import android.graphics.Paint;import android.graphics.Path;import android.graphics.Point;public class Stroke {	private Path _path;	private Paint _paint;	public Stroke (Paint paint) {    	_paint = paint;	}	public Path getPath() {    	return _path;	}	public Paint getPaint() {    	return _paint;	}	public void addPoint(Point pt) {    	if (_path == null) {        	_path = new Path();        	_path.moveTo(pt.x, pt.y);    	} else {        	_path.lineTo(pt.x, pt.y);    	}	}}


  • Also grundsätzlich macht man es so:


    In der Klasse in der man den Wert hat, braucht man diesen Code: "Wert" ist der Wert den man weiter geben möchte:

    Java
    public static Integer getWertValue(){
    		  
    		  Integer Irgendwas = Wert;
    		  return Irgendwas;
    		  
    	  }


    In der anderen Klasse kann man es dann so abrufen:


    Java
    Integer WERT = VorherigeKlasse.getWertValue();


    Fragen?

  • Etwas wirr erklärt.. oder ???



    Wenn du einen CustomView hast und in diesem Parameter setzen möchtest bzw auch der "Umwelt" zur Verfügung stellen willst,
    dann benutzt man oft Getter und Setter Methoden . Get zum holen von Informationen und Set zum Setzen dieser.


    Wichtig ist das diese Methoden public definiert sind, damit man von "aussen" auf diese Methoden Zugriff hat.


    Zugriff erfolgt nach bekanntem Schema.



    supertollerCustomView cview=null;



    // View ansprechen



    cview = findViewbyId(R.id.deineViewID);


    if (cview !=null){


    cview.setStartwert(1500);
    cview.setEndwert(3000);


    }





    setStartwert und setEndwert wären dann zum Beispiel öffentliche Methoden in deinem CustomView

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!