gpt4 book ai didi

java - arrayList 似乎仅在先完成一个 Activity (而不是另一个 Activity )时才会创建

转载 作者:行者123 更新时间:2023-12-02 09:58:10 25 4
gpt4 key购买 nike

我在为学校类(class)编写的这个应用程序中遇到问题。这是一个基本的锻炼跟踪应用程序。

我有一个 arrayList,但 Cardio.java Activity 只能保存到 arrayList(如果 Strength.java 已经先保存了某些内容)。不知道为什么,因为两者的代码是相同的。

我已经仔细检查过这两个 Activity 的代码是否相同,所以不确定为什么它似乎只在 strenght.java 首先保存到 arrayList 中。然后就可以正常工作了。

Cardio.java

public class Cardio extends AppCompatActivity {

String cardio;
String miles;
String time;


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

Button saveButton = (Button) findViewById(R.id.btnSave);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseHelper dbUtil = new DatabaseHelper();

Spinner cardioSpinner = findViewById(R.id.listCardioType);
cardio = cardioSpinner.getSelectedItem().toString();
EditText milesText = findViewById(R.id.txtMileageInput);
miles = milesText.getText().toString();
EditText timeText = findViewById(R.id.txtTimeInput);
time = timeText.getText().toString();

String record = cardio + ": " + miles + " miles, " + time + " mins.";

Log.d("test", record);

ArrayList strengthWorkouts = dbUtil.getArrayList("strength_workouts");
Log.d("test", strengthWorkouts.toString());
strengthWorkouts.add(record);
dbUtil.saveArrayList(strengthWorkouts, "strength_workouts");

Toast toast = Toast.makeText(Cardio.this, "Workout Saved", Toast.LENGTH_LONG);
toast.setGravity(0, 0, -200);
toast.show();
}


});

Button shareButton = (Button) findViewById(R.id.btnShare);
shareButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(Intent.ACTION_SEND);
myIntent.setType("text/plain");
String shareBody = "I just completed a workout! " + cardio + ": " + miles + " miles, " + time + " mins.";
myIntent.putExtra(Intent.EXTRA_SUBJECT, shareBody);
myIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(myIntent, "Share Using:"));

}
});

}
}
<小时/>

强度.java

public class Strength extends AppCompatActivity {

String exercise;
String repCount;
String weight;

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

Button saveButton = findViewById(R.id.btnSave);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatabaseHelper dbUtil = new DatabaseHelper();

Spinner exerciseSpinner = findViewById(R.id.listWeightType);
exercise = exerciseSpinner.getSelectedItem().toString();
EditText repCountText = findViewById(R.id.txtRepInput);
repCount = repCountText.getText().toString();
EditText weightText = findViewById(R.id.txtWeightInput);
weight = weightText.getText().toString();

String record = exercise + ": " + repCount + " reps, " + weight + " lbs.";

Log.d("test", record);

ArrayList strengthWorkouts = dbUtil.getArrayList("strength_workouts");
Log.d("test", strengthWorkouts.toString());
strengthWorkouts.add(record);
dbUtil.saveArrayList(strengthWorkouts, "strength_workouts");

Toast toast = Toast.makeText(Strength.this, "Workout Saved", Toast.LENGTH_LONG);
toast.setGravity(0, 0, -200);
toast.show();

}
});

Button shareButton = (Button) findViewById(R.id.btnShare);
shareButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent myIntent = new Intent(Intent.ACTION_SEND);
myIntent.setType("text/plain");
String shareBody = "I just completed a workout! " + exercise + ": " + repCount + " reps, " + weight + " lbs.";
myIntent.putExtra(Intent.EXTRA_SUBJECT, shareBody);
myIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(myIntent, "Share Using:"));

}
});


}
}
<小时/>

历史记录.java

public class History extends AppCompatActivity {

private static final String TAG = "ListDataActivity";

DatabaseHelper mDatabaseHelper;

private ListView mListView;

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

mListView = findViewById(R.id.listView);
DatabaseHelper dbUtils = new DatabaseHelper();
ArrayList<String> strengthHistory = dbUtils.getArrayList("strength_workouts");


ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
android.R.layout.simple_list_item_1,
strengthHistory );

mListView.setAdapter(arrayAdapter);
}
}

最佳答案

如果您的数据库中没有“strength_workouts”的数据,我认为您的 dbUtils.getArrayList("strength_workouts") 返回 null ArrayList。

如果您的 Activity 中列表为空,请尝试创建该列表:

ArrayList strengthWorkouts = dbUtil.getArrayList("strength_workouts");

if(strengthHistory == null) {
strengthHistory = new ArrayList<String>();
}

strengthWorkouts.add(record);
dbUtil.saveArrayList(strengthWorkouts, "strength_workouts");

关于java - arrayList 似乎仅在先完成一个 Activity (而不是另一个 Activity )时才会创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55837792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com