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

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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

    Java-Quellcode

    1. package com.example.drawproject;
    2. import android.support.v7.app.ActionBarActivity;
    3. import android.support.v7.app.ActionBar;
    4. import android.support.v4.app.Fragment;
    5. import android.app.Activity;
    6. import android.content.Intent;
    7. import android.os.Bundle;
    8. import android.view.LayoutInflater;
    9. import android.view.Menu;
    10. import android.view.MenuItem;
    11. import android.view.View;
    12. import android.view.ViewGroup;
    13. import android.widget.Button;
    14. import android.os.Build;
    15. public class MainActivity extends Activity {
    16. Button b1; //Gelb
    17. Button b2; //Blau
    18. Button b3; //Grün
    19. public int value = 0;
    20. @Override
    21. public void onCreate(Bundle savedInstanceState) {
    22. super.onCreate(savedInstanceState);
    23. setContentView(R.layout.drawlayout);
    24. DrawArea da = new DrawArea(this, null);
    25. b1 = (Button) findViewById(R.id.button1);
    26. b1.setOnClickListener(handler);
    27. b2 = (Button) findViewById(R.id.button2);
    28. b2.setOnClickListener(handler);
    29. b3 = (Button) findViewById(R.id.button3);
    30. b3.setOnClickListener(handler);
    31. }
    32. View.OnClickListener handler = new View.OnClickListener(){
    33. public void onClick(View v){
    34. if(v==b1){
    35. value = 1;
    36. }
    37. if(v==b2){
    38. value = 2;
    39. }
    40. if(v==b3){
    41. value = 3;
    42. }
    43. }};
    44. }
    Alles anzeigen


    HauptLayout

    Java-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:orientation="vertical" >
    6. <com.example.drawproject.DrawArea
    7. android:layout_width="match_parent"
    8. android:layout_height="match_parent"
    9. android:layout_below="@+id/button1" />
    10. <Button
    11. android:id="@+id/button1"
    12. android:layout_width="wrap_content"
    13. android:layout_height="wrap_content"
    14. android:layout_alignParentLeft="true"
    15. android:layout_alignParentTop="true"
    16. android:layout_marginLeft="84dp"
    17. android:layout_marginTop="79dp"
    18. android:text="Yellow" />
    19. <Button
    20. android:id="@+id/button2"
    21. android:layout_width="wrap_content"
    22. android:layout_height="wrap_content"
    23. android:layout_alignBaseline="@+id/button1"
    24. android:layout_alignBottom="@+id/button1"
    25. android:layout_marginLeft="165dp"
    26. android:layout_toRightOf="@+id/button1"
    27. android:text="Blue" />
    28. <Button
    29. android:id="@+id/button3"
    30. android:layout_width="wrap_content"
    31. android:layout_height="wrap_content"
    32. android:layout_alignBottom="@+id/button2"
    33. android:layout_alignParentRight="true"
    34. android:layout_marginRight="134dp"
    35. android:text="Green" />
    36. </RelativeLayout>
    Alles anzeigen


    View Klasse

    Java-Quellcode

    1. package com.example.drawproject;
    2. import android.content.Context;
    3. import android.graphics.*;
    4. import android.util.AttributeSet;
    5. import android.util.SparseArray;
    6. import android.view.MotionEvent;
    7. import android.view.View;
    8. import java.util.ArrayList;
    9. import java.util.List;
    10. import java.util.Random;
    11. public class DrawArea extends View {
    12. private List<Stroke> _allStrokes; //all strokes that need to be drawn
    13. private SparseArray<Stroke> _activeStrokes; //use to retrieve the currently drawn strokes
    14. private Random _rdmColor = new Random();
    15. int count = 1;
    16. public DrawArea(Context context, AttributeSet attrs) {
    17. super(context, attrs);
    18. _allStrokes = new ArrayList<Stroke>();
    19. _activeStrokes = new SparseArray<Stroke>();
    20. setFocusable(true);
    21. setFocusableInTouchMode(true);
    22. }
    23. public void onDraw(Canvas canvas) {
    24. if (_allStrokes != null) {
    25. for (Stroke stroke: _allStrokes) {
    26. if (stroke != null) {
    27. Path path = stroke.getPath();
    28. Paint painter = stroke.getPaint();
    29. if ((path != null) && (painter != null)) {
    30. if(count%2 != 0){
    31. canvas.drawPath(path, painter);
    32. }
    33. }
    34. }
    35. }
    36. }
    37. }
    38. @Override
    39. public boolean onTouchEvent(MotionEvent event) {
    40. final int action = event.getActionMasked();
    41. final int pointerCount = event.getPointerCount();
    42. switch (action) {
    43. case MotionEvent.ACTION_DOWN: {
    44. count++;
    45. if(count%2 != 1)
    46. {pointDown((int)event.getX(), (int)event.getY(), event.getPointerId(0));
    47. break;
    48. }
    49. if (count%2 != 0){
    50. for (int pc = 0; pc < pointerCount; pc++) {
    51. pointDown((int)event.getX(pc), (int)event.getY(pc), event.getPointerId(pc));
    52. }
    53. }
    54. }
    55. case MotionEvent.ACTION_MOVE: {
    56. break;
    57. }
    58. case MotionEvent.ACTION_UP: {
    59. break;
    60. }
    61. }
    62. invalidate();
    63. return true;
    64. }
    65. private void pointDown(int x, int y, int id) {
    66. if(count%2 !=1){
    67. //create a paint with random color
    68. Paint paint = new Paint();
    69. paint.setStyle(Paint.Style.STROKE);
    70. paint.setStrokeWidth(10);
    71. paint.setColor(_rdmColor.nextInt()); //Here should the values be added!
    72. //create the Stroke
    73. Point pt = new Point(x, y);
    74. Stroke stroke = new Stroke(paint);
    75. stroke.addPoint(pt);
    76. _activeStrokes.put(id, stroke);
    77. _allStrokes.add(stroke);
    78. }
    79. if (count%2 != 0){
    80. //retrieve the stroke and add new point to its path
    81. Stroke stroke = _activeStrokes.get(id);
    82. if (stroke != null) {
    83. Point pt = new Point(x, y);
    84. stroke.addPoint(pt);
    85. }
    86. }
    87. }
    88. }
    Alles anzeigen

    Zusatz View Klasse

    Java-Quellcode

    1. package com.example.drawproject;
    2. import android.graphics.Paint;
    3. import android.graphics.Path;
    4. import android.graphics.Point;
    5. public class Stroke {
    6. private Path _path;
    7. private Paint _paint;
    8. public Stroke (Paint paint) {
    9. _paint = paint;
    10. }
    11. public Path getPath() {
    12. return _path;
    13. }
    14. public Paint getPaint() {
    15. return _paint;
    16. }
    17. public void addPoint(Point pt) {
    18. if (_path == null) {
    19. _path = new Path();
    20. _path.moveTo(pt.x, pt.y);
    21. } else {
    22. _path.lineTo(pt.x, pt.y);
    23. }
    24. }
    25. }
    Alles anzeigen

  • 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-Quellcode

    1. public static Integer getWertValue(){
    2. Integer Irgendwas = Wert;
    3. return Irgendwas;
    4. }


    In der anderen Klasse kann man es dann so abrufen:

    Java-Quellcode

    1. 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