Как установить Text() TextView вне onCreate()?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как установить Text() TextView вне onCreate()?

Сообщение Anonymous »

Итак, я пытаюсь выполнить домашнее задание по программированию: мне нужно написать Java-приложение для Android в студии Android, которое управляет и создает для вас список задач/заметки. Должна быть возможность редактировать заметки, для этой функции (и для создания новой заметки) я использую дополнительную активность (notesActivity). Когда используется «Редактировать», макет заметок должен быть открыт с деталями заметок, подлежащими редактированию (название, дата, содержимое), но я просто не могу использовать setText() и updateDate() для представлений. Почему это? Ниже я предоставил свои классы.

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

package net.htlgkr.todoapp;

import static net.htlgkr.todoapp.NoteActivity.changeContent;
import static net.htlgkr.todoapp.NoteActivity.changeDate;
import static net.htlgkr.todoapp.NoteActivity.changeText;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.DatePicker;
import android.widget.ListView;
import android.widget.TextView;

import java.time.LocalDate;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

TextView titleTextBox;
DatePicker datePicker;
TextView contentTextBox;

public static ArrayList noteList = new ArrayList();
ListView noteListView;
NotesAdapter notesAdapter;

boolean mainIsActive = true;

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

noteListView = findViewById(R.id.noteListView);
notesAdapter = new NotesAdapter(this,R.layout.list_view_layout,noteList);
noteListView.setAdapter(notesAdapter);
registerForContextMenu(noteListView);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
configActionBar();
return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if(id == R.id.action_new){
switchToNoteActivity();
}
else if(id == R.id.action_save){
}
else if(id == android.R.id.home &&  !mainIsActive){
switchToMainActivity();
}
return super.onOptionsItemSelected(item);
}
private void configActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("Albert Notes");
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu,v,menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.note_menu,menu);
}

@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
titleTextBox = findViewById(R.id.displayTitleTextBox);
datePicker = findViewById(R.id.datePicker);
contentTextBox = findViewById(R.id.contentTextBox);

AdapterView.AdapterContextMenuInfo i = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int id = item.getItemId();

if(id == R.id.action_delete){
noteList.remove(i.position);
notesAdapter.notifyDataSetChanged();
return true;
}

else if(id == R.id.action_edit){
Note editedNote = noteList.get(i.position);
String title = editedNote.getTitle();
Log.d("EDITED TITLE",title);
String content = editedNote.getContent();
LocalDate date = editedNote.getDate();
switchToNoteActivity();
changeText(titleTextBox,title);
//changeText(contentTextBox,content);
//changeDate(date);
return true;
}

else if(id == R.id.action_view){

}
return super.onContextItemSelected(item);
}

public void switchToMainActivity(){
startActivity(new Intent(this, MainActivity.class));
finish();
mainIsActive = true;
}
public void switchToNoteActivity(){
startActivity(new Intent(this, NoteActivity.class));
finish();
mainIsActive = false;
}

}

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

package net.htlgkr.todoapp;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;

import java.time.LocalDate;
import java.util.ArrayList;

public class NoteActivity extends AppCompatActivity {

static TextView titleTextBox;
static TextView contentTextBox;
static DatePicker datePicker;
static NoteActivity noteActivity;
public static ArrayList  noteList = MainActivity.noteList;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
titleTextBox = findViewById(R.id.displayTitleTextBox);
contentTextBox = findViewById(R.id.contentTextBox);
datePicker = findViewById(R.id.datePicker);
setContentView(R.layout.activity_note);
}

public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
configActionBar();
return super.onCreateOptionsMenu(menu);
}

private void configActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("Albert Notes");
actionBar.setDisplayHomeAsUpEnabled(true);
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if(id == R.id.action_new){
switchToNoteActivity();
}
else if(id == R.id.action_save){
}
else if(id == android.R.id.home){
switchToMainActivity();
}
return super.onOptionsItemSelected(item);
}

public void saveButtonOnClick(View view){

TextView titleTextBox = findViewById(R.id.displayTitleTextBox);
DatePicker dateView = findViewById(R.id.datePicker);
TextView content = findViewById(R.id.contentTextBox);

String titleString = String.valueOf(titleTextBox.getText());
String contentString = String.valueOf(content.getText());
int day = dateView.getDayOfMonth();
int month = dateView.getMonth();
int year = dateView.getYear();
LocalDate date = LocalDate.of(year, month, day);

Note newNote = new Note(titleString, date, contentString);
noteList.add(newNote);
Log.d("Eintrag getätigt", noteList.get(noteList.size()-1).getTitle());
switchToMainActivity();
}

public static void changeText(TextView textView, String newText) {
textView.setText(newText);
}
public static void changeContent(String newContent){
contentTextBox.setText(newContent);
}
public static void changeDate(LocalDate newDate){
datePicker.updateDate(newDate.getYear(),newDate.getMonthValue(),newDate.getDayOfMonth());
}

public void switchToMainActivity(){
startActivity(new Intent(this, MainActivity.class));
finish();
}
public void switchToNoteActivity(){
startActivity(new Intent(this, NoteActivity.class));
finish();
}
}
Я уже пробовал несколько вещей, например разные типы потоков и т. д., но ничего не помогает

Подробнее здесь: https://stackoverflow.com/questions/784 ... f-oncreate
Ответить

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

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

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

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

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