android студия: texview не показывает - PullRequest
0 голосов
/ 22 января 2020

У меня возникли некоторые проблемы с моим texview, когда я использую кнопку m в своем первом занятии, я хочу открыть второе занятие и отобразить мое texview с информацией, полученной из моего первого занятия. Но когда я использую ID.setText(intent_nom.getStringExtra("nom"));, мое приложение больше не работает. Можете ли вы помочь мне, пожалуйста, спасибо.

здесь мое первое занятие

package com.maze.maze;

import androidx.appcompat.app.AppCompatActivity;

import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Button;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Color;
import android.widget.ImageView;
import java.io.InputStream;
import java.io.IOException;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.BitmapDrawable;


public class MainActivity extends AppCompatActivity {

    RadioGroup radiogroup;
    Button button_val;
    EditText e_prenom;
    EditText e_nom;
    private static final String SAVED_TEXT_KEY = "some_key";



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

        button_val=findViewById(R.id.button_v);
        radiogroup=findViewById(R.id.radiogroup);
        e_prenom=findViewById(R.id.e_prenom);
        e_nom=findViewById(R.id.e_nom);




        button_val.setOnClickListener(new View.OnClickListener() {
            @Override


            public void onClick(View view){

                int  laby =0;
                switch (radiogroup.getCheckedRadioButtonId())
                {
                    case R.id.radio_1: laby=1; break;
                    case R.id.radio_2: laby=2; break;
                    case R.id.radio_3: laby=3; break;
                    case R.id.radio_4: laby=4; break;
                    case R.id.radio_5: laby=5; break;
                }
                Intent intent_laby= new Intent();
                intent_laby.putExtra("num_labyrinth",laby);
                Intent intent_nom= new Intent();
                intent_nom.putExtra("nom", e_nom.getText() );
                Intent intent_prenom= new Intent();
                intent_prenom.putExtra("prenom", e_prenom.getText() );
                startActivity(new Intent(MainActivity.this, Activity_labyrinth.class));
            }

        });

    }




}

здесь мое второе занятие

package com.maze.maze;
import java.io.InputStream;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.content.res.Resources;
import android.widget.EditText;
import android.widget.TextView;

public class Activity_labyrinth extends AppCompatActivity {

    TextView ID;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ID=findViewById(R.id.ID);

        Intent intent_nom  = getIntent();
        ID.setText(intent_nom.getStringExtra("nom"));


        setContentView(R.layout.activity_labyrinth);
    }
}

вот мой файл xml моего второго деятельность

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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="wrap_content"
    android:visibility="visible"
    tools:context=".Activity_labyrinth"
    tools:visibility="visible">

    <TextView
        android:id="@+id/ID"

        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#ffffffff"
        android:gravity="center_horizontal"
        android:textColor="#000"
        android:textSize="50dp"
        android:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>

Ответы [ 5 ]

0 голосов
/ 22 января 2020

В жизненном цикле действия, OnCreate необходимо установить SetContentView (представление), после того как вы можете использовать XML виджеты.

Вы получаете TextView без SetConentView, необходимо установить XML представление (связать с Ваша деятельность) Ваша деятельность с помощью SetConentView ().

Вы можете написать код следующим образом:

public class Activity_labyrinth extends AppCompatActivity {

    TextView ID;

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

        ID=findViewById(R.id.ID);

        Intent intent_nom  = getIntent();
        ID.setText(intent_nom.getStringExtra("nom"));

        //setContentView(R.layout.activity_labyrinth);
        //Move This Line Below TextView Casting 
    }
}
0 голосов
/ 22 января 2020

В вашем коде есть две проблемы:

  1. Вы создаете всего четыре намерения и 3 намерения со значениями и последнее для начала действия, вам не нужно это делать, только одно намерение способно отправлять значения и переходить от одного действия к другому.
Intent intent_laby= new Intent();
                intent_laby.putExtra("num_labyrinth",laby);

                intent_laby.putExtra("nom", e_nom.getText().toString() );

                intent_laby.putExtra("prenom", e_prenom.getText().toString() );
                startActivity(new Intent(MainActivity.this, Activity_labyrinth.class));

Также обратите внимание, что вам нужно вызвать toString() при отправке значений из текста редактирования .

В Activity_labyrinth setContentView следует вызывать до findViewById, поэтому ваш код должен быть:
setContentView(R.layout.activity_labyrinth);
ID=findViewById(R.id.ID);

        Intent intent_nom  = getIntent();
        ID.setText(intent_nom.getStringExtra("nom"));
0 голосов
/ 22 января 2020

Вы создаете 4 различные переменные намерения и, наконец, начинаете деятельность без каких-либо данных. Вы можете использовать код ниже, чтобы начать деятельность,

Intent intent_laby= new Intent(MainActivity.this, Activity_labyrinth.class);
  intent_laby.putExtra("num_labyrinth",laby);
  intent_laby.putExtra("nom", e_nom.getText() );
  intent_laby.putExtra("prenom", e_prenom.getText() );
  startActivity(intent_laby);

Надеюсь, это поможет !!

0 голосов
/ 22 января 2020

Ваш код показывает, что

  1. вы хотите передать данные из действия в другое действие.

  2. Здесь вы используете Intent.

Таким образом, вы должны установить данные с этим намерением, что вы начинаете.

Задача 1: Вы назначаете данные с неправильным объектом Intent.

Intent intent_nom= new Intent();
intent_nom.putExtra("nom", e_nom.getText());
startActivity(intent_nom);

Задача 2: Вам следует отправлять данные String, потому что вы получение данных по getStringExtra("nom").

Intent intent_nom= new Intent();
intent_nom.putExtra("nom", e_nom.getText().toString());//Here need this
startActivity(intent_nom);
0 голосов
/ 22 января 2020

Вы делаете новый Intent при запуске нового действия. Попробуйте это в своем слушателе щелчка, где вы начинаете Activity_labyrinth:

Intent intent_nom = new Intent();
intent_nom.putExtra("nom", e_nom.getText() );
startActivity(intent_nom);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...