TextView wert übergeben

R

rellik

Neues Mitglied
Threadstarter
Hallo Leute

Ich habe eine Frage hab folgenden Code

Meine MainActivity
Code:
 package com.example.km4l.myapplication;

import android.content.Context;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private static int  zahl = 0;
    final Context context = this;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initListeners();
    }

    private void initListeners (){

        Button btnTraining = (Button) findViewById(R.id.btnTraining);

        final LinearLayout linearlayout = (LinearLayout) findViewById(R.id.myLinearLayout);

        btnTraining.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //eigenen code
                System.out.println("Test");

                String text = "Neue Trainingseinheit";





                    TextView tv = new TextView(context);

                    linearlayout.addView(tv);

                    tv.setText(text +zahl);
                    tv.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {

                            gotoTraining(view);
                        }
                    });
                    zahl++;

            }
        });

    }

    public void gotoTraining (View view){
        Intent intent = new Intent(this, TrainingsActivity.class);
        intent.putExtra("Zahl", zahl);
        startActivity(intent);
    }
}
MainActivity Design
Code:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnTraining"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:text="Trainingseinheit hinzufuegen"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <LinearLayout
        android:id="@+id/myLinearLayout"
        android:layout_width="368dp"
        android:layout_height="431dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="24dp"
        android:orientation="vertical"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btnTraining">

    </LinearLayout>
</android.support.constraint.ConstraintLayout>
Nach jedem Klick auf den Button erstelle ich ein TextView mit Trainingsprogramm und eine zahl die ich hoch zähle nach 4 mal klicken habe ich 4 TextViews. Die Textview hab ich mit einem onClickListener versehen und möchte gerne wenn ich auf den Klicke das der Text z.B Trainingsprogramm 3 im neuen Activity im TextView angezeigt wird. Wie kann ich dies schaffen??
 
J

jogimuc

Erfahrenes Mitglied
Hallo
Wird denn die zweite activity auch gestartet?
Müsste eigentlich.
In der zweiten activty musst du den übergeben Wert wieder aus dem intent auslesen.

int zahl = getIntent().getIntExtra("Zahl");

Nur denke ich wird nicht unbedingt der richtige wert zahl übergeben werden.
.Denn beim Intent greifst du auf die globale variable "zahl" zu die steht nach 4 mal klicken auf 4. Wenn du nun die zweite view klickst wird die 4 übergeben und nicht zwei.

Du könntest den Text aus der Textview auslesen und den übergeben.
 
Zuletzt bearbeitet:
R

rellik

Neues Mitglied
Threadstarter
Das funktioniert nicht wie soll denn der code aussehen im zweiten activity


ja genau das problem habe ich will aber die zwei übergeben und nicht die 4
 
Zuletzt bearbeitet:
J

jogimuc

Erfahrenes Mitglied
Hi ich sagte du kannst dir die Zahl aus dem TextView was du klickst holen und zwar aus der View.
geht in etwa so.

public void gotoTraining (View view){
TextView tv1 = (TextView) view;
String st = (String) tv1.getText();
st = st.substring("Neue Trainingseinheit".length(),st.length());

Intent intent = new Intent(this, TrainingsActivity.class);
intent.putExtra("Zahl", Integer.valueOf(st));
startActivity(intent);
}
 
J

jogimuc

Erfahrenes Mitglied
Hallo
also etwas genauer könntest du schon schreiben. Nur zwei Worte mehr sind wir wohl nicht wert.
Bei mir läuft es. Ich habe deinen code in ein Projeckt geladen und getestet.
Dann zeige mal wie es jetzt bei dir aus sieht .
 
R

rellik

Neues Mitglied
Threadstarter
Code:
public class MainActivity extends AppCompatActivity {

    private static int  zahl = 0;
    final Context context = this;
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initListeners();
    }

    private void initListeners (){

        Button btnTraining = (Button) findViewById(R.id.btnTraining);

        final LinearLayout linearlayout = (LinearLayout) findViewById(R.id.myLinearLayout);

        btnTraining.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                //eigenen code
                String text = "Neue Trainingseinheit";





                final TextView tv = new TextView(context);

                linearlayout.addView(tv);



                tv.setText(text +zahl);


                                tv.setOnClickListener(new View.OnClickListener() {


                    @Override
                    public void onClick(View view) {





                        gotoTraining(view);
                    }
                });
                zahl++;

            }
        });

    }




    public void gotoTraining (View view){
        TextView tv1 = (TextView) view;
        String st = (String) tv1.getText();
        st = st.substring("Neue Trainingseinheit".length(),st.length());

        Intent intent = new Intent(this, TrainingsActivity.class);
        intent.putExtra("Zahl", Integer.valueOf(st));
        startActivity(intent);
    }
Das ist meine mainactivity

und das was jetzt kommt als code meine zweite activity

Code:
public class TrainingsActivity extends AppCompatActivity {

    Intent intent ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_trainings);

        int zahl = getIntent().getIntExtra("Zahl");



        TextView textView = (TextView) findViewById(R.id.welcome);
        textView.setText(numberofZahl);


    }
}
wobei bei der zweiten sagt er, er will ein integer wert und kein string bei int zahl = getIntent().getIntExtra("Zahl");
 
J

jogimuc

Erfahrenes Mitglied
HI wenn du dir anschaust wellche Parameter getIntExtra will kommst du selber drauf.
int zahl = getIntent().getIntExtra("Zahl",0);
wobei die null ein default wert ist der übergeben wird wenn nichts im Intent gefunden wird.

Auserdem hätte der Fehler vor dem Code den ich geschickt habe auch sein müssen.
Und er entsteht erst wenn die zweite Activity gestartet wird. Das sind nützliche infos für uns.
Die Text Zeile hätte rot unterstrichen sein müssen. Wenn du einen Fehler im Code hast brauchste kein Build Starten. Wird immer Fehler geben.

Was ist nummerofZahl ?
textView.setText(numberofZahl);

textView.setText(""+ zahl);
textView.setText(String.valueOf(zahl));


Wir Helfen hier Freiwillig .
 
Zuletzt bearbeitet:
R

rellik

Neues Mitglied
Threadstarter
Ja hab ich verstanden Danke, aber jetzt ist nichts mehr rot und er sagt mir beim zweiten activity stürzt er ab.


Der fehler liegt daran, dass er den string wert nicht in einem Integer umändern will.
 
R

rellik

Neues Mitglied
Threadstarter
kannst du bitte den ganzen code hier zeigen verstehe nichts bin noch neu in android
 
J

jogimuc

Erfahrenes Mitglied
Wenn du in der zweiten einen String brauchst kannste den auch gleich übergeben.
in der Main
intent.putExtra("Zahl", st);

in der zweiten
String zahl = getIntent().getStringExtra("Zahl");
TextView textView = (TextView) findViewById(R.id.welcome);
textView.setText(zahl);
 
R

rellik

Neues Mitglied
Threadstarter
Ja Danke hat geklappt und schuldigung das ich dumme fragen gestellt hab. Ich hab da noch etwas soll ich dafür ein neues Thema aufmachen ??

Es geht darum 3 TextView zu erstellen und diese mit einer arrayList zu verbinden die Daten bekomme ich von einer neuen Klasse MyApp
 
J

jogimuc

Erfahrenes Mitglied
Alles gut. Fragen kannst du immer. Was nicht schön ist nur zwei Worte und wir ich soll Wissen woran es liegt.
Ok Schnee von gestern.
Von mir aus kannste hier weiter schreiben oder auch einen neuen post auf machen.

Kann mir im Moment noch nichts richtiges unter deinen Problem vorstellen.
 
R

rellik

Neues Mitglied
Threadstarter
Ich habe eine Array List in einer anderen klasse schon vorprogrammiert. Jetzt will ich eine neu Klasse erstellen und diese mit Daten füllen einmal Cardio und 300 kalorien und noch was. 3 Daten sollen es sein. Diese daten will ich in meiner app anzeigen wenn man auf 3 klickt wie gerade. dann sollen dadrunter die daten sein die man vor und zurück blättern kann.
 
J

jogimuc

Erfahrenes Mitglied
Du kannst auch mehrere werte einem intent mitgeben.
Für jeden Parameter den du den intent mitgiebst musst du einen anderen key benutzen.
Den gleichen key brauchst du dann in der neuen aktivity auch wieder zum auslesen.
 
R

rellik

Neues Mitglied
Threadstarter
Danke ich mache mal neues Thema auf.
 
Oben Unten