Почему в деталях деятельность - это значения, которые не передаются из MainActivity в Android Studio?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Почему в деталях деятельность - это значения, которые не передаются из MainActivity в Android Studio?

Сообщение Anonymous »

Проблема: назначение, дата и примечания не отображаются в The DetailsActivity, отображается только тип поездки. Я думаю, что есть проблема в намерениях, но, честно говоря, я не могу понять, какой из них и после нескольких дней интенсивного обучения я обращаюсь к вам о помощи. Заранее спасибо. < /P>
ps. Я постараюсь опубликовать код. Если необходим, я опубликую Activation.xml и т. Д. < /p>

Код: Выделить всё

//MainActivity

package com.example.mytravelplanner;

import android.app.DatePickerDialog;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {

private EditText editTextDestination;
private Spinner spinnerTravelType;
private Button buttonSelectDate;
private TextView textViewSelectedDate;
private EditText editTextNote;
private Button buttonAddDestination;
private RecyclerView recyclerView;
private DestinationsAdapter destinationsAdapter;
private ArrayList destinationsList;

private String selectedDate = "";

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

// Collega le view dal layout (activity_main.xml)
editTextDestination = findViewById(R.id.editTextDestination);
spinnerTravelType = findViewById(R.id.spinnerTravelType);
buttonSelectDate = findViewById(R.id.buttonSelectDate);
editTextNote = findViewById(R.id.editTextNote);
buttonAddDestination = findViewById(R.id.buttonAddDestination);
recyclerView = findViewById(R.id.recyclerViewDestinations);
textViewSelectedDate = findViewById(R.id.textViewSelectedDate);

// Inizializza la lista delle destinazioni, della RecyclerView e l'adapter
destinationsList = new ArrayList();
destinationsAdapter = new DestinationsAdapter(destinationsList); // gestisce il contenuto della lista
recyclerView.setLayoutManager(new LinearLayoutManager(this)); // imposta il layout manager per visualizzare le destinazioni in una lista verticale
recyclerView.setAdapter(destinationsAdapter);

//Aggiungi un listener di click sugli elementi della lista

// Configurazione dello spinner
ArrayAdapter spinnerAdapter = ArrayAdapter.createFromResource(
this,
R.array.travel_types, // Array definito in strings.xml
android.R.layout.simple_spinner_item // Layout predefinito per gli elementi del spinner
);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerTravelType.setAdapter(spinnerAdapter);

// Gestione del pulsante "Seleziona Data" attraverso un OnClickListener
buttonSelectDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showDatePicker();
}
});

// Gestione del pulsante "Aggiungi Destinazione" attraverso un OnClickListener
buttonAddDestination.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String travelType = spinnerTravelType.getSelectedItem().toString();

// Verifica che i campi obbligatori siano compilati
if (editTextDestination.getText().toString().isEmpty() ||
selectedDate.isEmpty() ||
travelType.isEmpty()) {
Toast.makeText(MainActivity.this, "Compila tutti i campi obbligatori", Toast.LENGTH_SHORT).show();
return;
}

// Log per debug
Log.d("MainActivity", "Aggiunta destinazione: "  + editTextDestination.getText().toString());

// Aggiungi la destinazione alla lista
addDestination();

// Crea un Intent per passare alla DetailsActivity
Intent intent = new Intent(MainActivity.this, DetailsActivity.class);
intent.putExtra("destinationName", destinationsList.toString());
intent.putExtra("travelType", travelType);
intent.putExtra("travelDate", selectedDate);
intent.putExtra("note", editTextNote.getText().toString());
startActivity(intent);

}
});
}

// Metodo per selezionare la data
private void showDatePicker() {
Log.d("DatePicker", "showDatePicker chiamato");
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);

DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this,
(view, year1, month1, dayOfMonth) -> {
Calendar selectedCalendar = Calendar.getInstance();
selectedCalendar.set(year1, month1, dayOfMonth);

// Formatta la data
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
selectedDate = dateFormat.format(selectedCalendar.getTime());

// Aggiorna la TextView con la data selezionata
textViewSelectedDate.setText("Data Selezionata: " + selectedDate);
},
year, month, day);
datePickerDialog.show();
}

// Metodo per aggiungere una destinazione alla lista
private void addDestination() {
String destinationName = editTextDestination.getText().toString();
String travelType = spinnerTravelType.getSelectedItem().toString();
String date = selectedDate;
String note = editTextNote.getText().toString();

// Log per vedere se destinationName è correttamente popolato
Log.d("MainActivity", "Destination Name: " + destinationName); // Qui aggiungi il log

// Verifica che i campi obbligatori siano compilati
if (destinationName.isEmpty() || travelType.isEmpty() || date.isEmpty()) {
Toast.makeText(this, "Compila tutti i campi", Toast.LENGTH_SHORT).show();
return;
}

// Crea un nuovo oggetto Destination
Destination newDestination = new Destination(destinationName, travelType, date, note);
destinationsList.add(newDestination); // Aggiungi l'oggetto Destination alla lista
destinationsAdapter.notifyItemInserted(destinationsList.size() - 1);  // Notifica l'adapter che ci sono nuovi dati per aggiornare la RecyclerView

// Pulisce i campi
editTextDestination.setText("");
spinnerTravelType.setSelection(0);
selectedDate = "";
textViewSelectedDate.setText("Nessuna Data Selezionata");
editTextNote.setText("");

// Mostra un messaggio di conferma
Toast.makeText(this, "Destinazione Aggiunta!", Toast.LENGTH_SHORT).show();
}
}

Код: Выделить всё

//DetailsActivity

package com.example.mytravelplanner;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;

public class DetailsActivity extends AppCompatActivity {

private TextView textViewDestination;
private TextView textViewTravelType;
private TextView textViewDate;
private TextView textViewNote;

private Button buttonBack;
private Button buttonShare;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
setContentView(R.layout.activity_details);

// Collega le view dal layout (activity_details.xml)
textViewDestination = findViewById(R.id.textViewDestinationName);
textViewTravelType = findViewById(R.id.textViewType);
textViewDate = findViewById(R.id.textViewTravelDate);
textViewNote = findViewById(R.id.textViewTravelNote);

// Collega il pulsante di ritorno alla MainActivity
buttonBack = findViewById(R.id.buttonBack);

// Collega il pulsante di condivisione della destinazione
buttonShare = findViewById(R.id.buttonShare);

// Listener per il pulsante di condivisione
buttonShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Ottieni i dati da condividere della destinazione dalla MainActivity
String destinationName = textViewDestination.getText().toString();
String travelType = textViewTravelType.getText().toString();
String date = textViewDate.getText().toString();
String note = textViewNote.getText().toString();

// Crea una stringa che contiene i dati da condividere
String message = "Destinazione: " + destinationName + "\n" +
"Tipo di viaggio: " + travelType + "\n" +
"Data: " + date + "\n" +
"Note: " + note;

// Usa un Intent implicito per la condivisione
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, message);

// Avvia il chooser per selezionare l'applicazione di condivisione
startActivity(Intent.createChooser(shareIntent, "Condividi Destinazione"));
}
});

// Recupera i dati passati dalla MainActivity
Bundle extras = getIntent().getExtras();
if (extras != null) {
String destinationName = extras.getString("destinationName");
String travelType = extras.getString("travelType");
String travelDate = extras.getString("travelDate");
String note = extras.getString("note");

//Log per verificare i dati ricevuti
Log.d("DetailsActivity", "Received Destination Name: " + destinationName);

// Controlla se i dati non sono nulli o vuoti e imposta il testo
if (destinationName != null && !destinationName.isEmpty()) {
textViewDestination.setText("Destinazione: " + destinationName);
} else {
textViewDestination.setText("Destinazione non disponibile");
}

if (travelType != null && !travelType.isEmpty()) {
textViewTravelType.setText("Tipo di viaggio: "  + travelType);
} else {
textViewTravelType.setText("Tipo di viaggio non disponibile");
}

if (travelDate != null && !travelDate.isEmpty()) {
textViewDate.setText("Data: " + travelDate);
} else {
textViewDate.setText("Data non disponibile");
}

if (note != null && !note.isEmpty()) {
textViewNote.setText("Note: " + note);
} else {
textViewNote.setText("Note non disponibili");
}
}

// Listener per il pulsante di ritorno alla MainActivity
buttonBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();  // Termina l'Activity corrente
}
});

// Log per il debug (spostato dopo l'inizializzazione delle viste)
Log.d("DetailsActivity", "TextView Destination initialized: " + textViewDestination);
}
}

Код: Выделить всё

//DestinationsAdapter

package com.example.mytravelplanner;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;

public class DestinationsAdapter extends RecyclerView.Adapter{

private final ArrayList destinationsList; //Lista delle destinazioni da visualizzare

//Costruttore per inizializzare la lista delle destinazioni
public DestinationsAdapter(ArrayList  destinationsList){
this.destinationsList = destinationsList;
}

//Classe interna per il ViewHolder
public static class DestinationViewHolder extends RecyclerView.ViewHolder{
public TextView textViewDestination;
public TextView textViewTravelType;
public TextView textViewDate;
public TextView textViewNote;

public DestinationViewHolder(View itemView){
super(itemView);
//Collega le view dal layout (destination_item.xml)
textViewDestination = itemView.findViewById(R.id.textViewDestination);
textViewTravelType = itemView.findViewById(R.id.textViewTravelType);
textViewDate = itemView.findViewById(R.id.textViewDate);
textViewNote = itemView.findViewById(R.id.textViewNote);
}
}

public DestinationViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//Infla il layout del singolo elemento della lista
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.destination_item, parent, false);
return new DestinationViewHolder(view);
}

//Metodo onBindViewHolder per impostare i dati in ogni elemento della lista

@Override
public void onBindViewHolder(@NonNull DestinationViewHolder holder, int position) {
// Ottieni l'oggetto Destination alla posizione corrente
Destination destination = destinationsList.get(position);

//Imposta i dati nel ViewHolder
holder.textViewDestination.setText(destination.getName());
holder.textViewTravelType.setText(destination.getTravelType());
holder.textViewDate.setText(destination.getDate());
holder.textViewNote.setText(destination.getNote());
}

public int getItemCount() {
/*Restituisce il numero totale di elementi nella lista, utilizzato da RecyclerView
per sapere quanti elementi mostrare
*/
return destinationsList.size();
}

}

Код: Выделить всё

//Destination

package com.example.mytravelplanner;

public class Destination {
private String name;
private String travelType;//tipo di viaggio (es.Lavoro, studio ecc.)
private String date;
private String note;

//Costruttore
public Destination (String name, String travelType, String date, String note) {
this.name = name;
this.travelType = travelType;
this.date = date;
this.note = note;
}

//Metodi GETTER
public String getName(){
return name;
}

public String getTravelType(){
return travelType;
}

public String getDate(){
return date;
}

public String getNote(){
return note;
}

//Metodi SETTER
public void setName(String name){
this.name = name;
}

public void setTravelType(String travelType){
this.travelType = travelType;
}

public void setDate(String date) {
this.date = date;
}

public void setNote(String note){
this.note = note;
}

//Metodo toString
public String toString(){
return "Destination{" +
"name='" + name + '\'' +
", travelType='" + travelType + '\'' +
", date='" + date + '\'' +
", note='" + note + '\'' +
'}';
}

}

Я надеюсь решить эту небольшую проблему

Подробнее здесь: https://stackoverflow.com/questions/793 ... ivity-in-a
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему в активности Details значения не передаются из MainActivity в Android Studio?
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Ошибка MainActivity при перемещении на промежуточную деятельность
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Ошибка MainActivity при перемещении на промежуточную деятельность
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Ошибка MainActivity при перемещении на промежуточную деятельность
    Anonymous » » в форуме Android
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Я хочу изменить путь android:name=".MainActivity" на "settings.MainActivity"
    Anonymous » » в форуме JAVA
    0 Ответы
    119 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Android»