Java Android Studio-根据来自其他活动的用户输入更新活动文本视图
这是我的第一个android应用程序,我正在创建一个非常基本的资金管理器 当应用程序第一次打开时,它会打开一个主页,其中一些预加载的数据是硬编码的(纯粹出于测试原因)。我有一个选项供用户在另一页上编辑这些值,但是当切换回主视图时,不会显示新值 这是代码。谢谢你的帮助Java Android Studio-根据来自其他活动的用户输入更新活动文本视图,java,android-studio,android-activity,page-refresh,Java,Android Studio,Android Activity,Page Refresh,这是我的第一个android应用程序,我正在创建一个非常基本的资金管理器 当应用程序第一次打开时,它会打开一个主页,其中一些预加载的数据是硬编码的(纯粹出于测试原因)。我有一个选项供用户在另一页上编辑这些值,但是当切换回主视图时,不会显示新值 这是代码。谢谢你的帮助 // Create New Activity package com.example.moneymanager; import androidx.appcompat.app.AppCompatActivity; import
// Create New Activity
package com.example.moneymanager;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class CreateNewActivity extends AppCompatActivity{
// Declare Button Variables
Button dashboardBtn, homeBtn, extrasBtn, cancelBtn, saveBtn;
EditText projectTitle, goalName;
Boolean savedFlag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_new_page);
// Link buttons to xml value
dashboardBtn = findViewById(R.id.dashboard_btn);
homeBtn = findViewById(R.id.home_btn);
extrasBtn = findViewById(R.id.extras_btn);
cancelBtn = findViewById(R.id.cancel_btn);
saveBtn = findViewById(R.id.save_btn);
// Link Edit Text with Id
projectTitle = findViewById(R.id.name_value);
goalName = findViewById(R.id.goal1_name_value);
// Set onClick listener for dashboard btn
dashboardBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
moveToDashboard();
}
});
// Set onClick listener for home btn
homeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
moveToHome();
}
});
// Set onClick listener for extras btn
extrasBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
moveToExtras();
}
});
// Listener for cancel Btn
cancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
moveToHome();
}
});
// Listener for save Btn
saveBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
saveProject();
moveToHome();
}
});
}
/*************************Private Methods*****************************/
// Create private method for dashboard
private void moveToDashboard(){
Intent i = new Intent(this, DashboardActivity.class);
startActivity(i);
}
// Create private method for extras
private void moveToHome(){
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
}
// Private method for extras btn
private void moveToExtras(){
Intent i = new Intent(this, ExtrasActivity.class);
startActivity(i);
}
//Private method for save Btn
private void saveProject(){
// Link user Input with defined variables
projectTitle.getText();
goalName.getText();
// Set flag to true to use in main activity
savedFlag = true;
}
}
// Main Activity
package com.example.moneymanager;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class MainActivity extends AppCompatActivity {
// Declare Button Variables
Button dashboardBtn, extrasBtn;
TextView overViewText, savingsGoalText;
// Create a new instance of the CreateNewActivity Class
CreateNewActivity retrieve = new CreateNewActivity();
Boolean savedFlagIsTrue = retrieve.savedFlag;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Link NAVIGATION to xml value
dashboardBtn = findViewById(R.id.dashboard_btn);
extrasBtn = findViewById(R.id.extras_btn);
// Set onClick listener for dashboard btn
dashboardBtn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
moveToDashboard();
}
});
// Set onClick listener for extras btn
extrasBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
moveToExtras();
}
});
// If user has saved a new project
if (savedFlagIsTrue){
String projectTitle = retrieve.projectTitle.toString();
String goalTitle = retrieve.goalName.toString();
// Link and set Overview Text with input from CreateNewActivity Class
overViewText = findViewById(R.id.overview_text);
overViewText.setText(projectTitle);
// Link and set Goal Text with input from CreateNewActivity Class
savingsGoalText = findViewById(R.id.savings_goal_text);
savingsGoalText.setText(goalTitle);
}
}
// Create private method for dashboard
private void moveToDashboard(){
Intent i = new Intent(this, DashboardActivity.class);
startActivity(i);
}
// Create private method for extras
private void moveToExtras(){
Intent i = new Intent(this, ExtrasActivity.class);
startActivity(i);
}
}
如果我正确阅读了您的代码,您会尝试在主活动的onCreate方法中加载输入的值吗?
如果我没有弄错的话,在再次关闭第二个活动后将不会调用该方法(它将仅在活动停止或销毁后调用,但仅在第二个活动启动时才会暂停)
您可以尝试在onResume-方法中查找用户输入,一旦活动返回前台,就应该调用该方法。 我上次使用Android已经有几天了,所以您可能想看看activity LifeCycle文档:
内容如下(关于简历): 例如,此类事件可能是接到电话、用户导航到其他活动或设备屏幕关闭
对我来说,这听起来像是你在寻找的东西。我认为问题在于,每次你改变活动,你都会创建一个新的活动。因此,您的硬编码数据无法接收。我建议你看看 也许a是你的另一个选择。在这里,你可以使用片段而不是活动,但是你也可以用它们来做所有的事情。如果将片段作为变量存储在PagerAdapter中,数据将被存储,您可以通过get方法或接口访问它们 希望有帮助;)