java - 如何将List的内容传递给另一个Android Activity

标签 java android android-studio

我正在尝试将列表从一个 Activity 传递到另一个 Activity 。正如我通过日志检查的那样,在 FindAllPairsEasyActivity 中,它将 player_points 放入列表中,但我无法在 ProgressActivity 中读取它。

我想要的是显示一组点作为ListView,因为游戏很少。

FindAllPairsEasyActivity.java(只有两个方法):

public class FindAllPairsEasyActivity extends AppCompatActivity {
 ArrayList<Integer> findAllPairsList = new ArrayList<>(); 
...

 public void saveScore() {
        //Log.i("info","saveScore w find all pairs easy");
        SharedPreferences preferences = this.getSharedPreferences(usernameView.getText().toString(), Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        int totalScore = preferences.getInt("totalScore",0);
        totalScore = totalScore + player_points;
        editor.putInt("rts_score",player_points);
        findAllPairsList.add(player_points);
        //Log.i("d","FindAllPairsEasy findAllPairsList: " + findAllPairsList);
        editor.putInt("total_score",totalScore);
        editor.commit();
    }

    public ArrayList<Integer> getList() {
        return findAllPairsList;
    }

ProgressActivity.java:

public class ProgressActivity extends AppCompatActivity {

    public ListView list;
    TextView usernameView, myProgressView, totalScoreView;

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

        totalScoreView = findViewById(R.id.totalScoreView);
        myProgressView = findViewById(R.id.myProgressView);

        //List <Integer> findAllPairsList = findAllPairsEasyActivity.getList();

        AssetManager am = getApplicationContext().getAssets();
        Typeface logoFont = Typeface.createFromAsset(am, String.format(Locale.ENGLISH, "fonts/%s","FjallaOne-Regular.ttf"));
        Typeface myProgressFont = Typeface.createFromAsset(am, String.format(Locale.ENGLISH, "fonts/%s","Montserrat-Regular.ttf"));
        myProgressView.setTypeface(logoFont);
        myProgressView.setText("My Progress");

        list =  findViewById(R.id.listView1);

        String user = getIntent().getStringExtra("username");
        usernameView = findViewById(R.id.username_progress);
        usernameView.setVisibility(View.INVISIBLE);
        usernameView.setText("" + user);

        //ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.activity_progress,R.id.listView1,cars);

        SharedPreferences preferences =  this.getSharedPreferences(usernameView.getText().toString(), Context.MODE_PRIVATE);
        int rts_score = preferences.getInt("rts_score",0);
        int mc_score = preferences.getInt("mc_score",0);
        int g_score = preferences.getInt("g_score",0);
        int ftt_score = preferences.getInt("ftt_score",0);

        int total_score = rts_score + mc_score + g_score + ftt_score;

        FindAllPairsEasyActivity findAllPairsEasyActivity = new FindAllPairsEasyActivity();
        list.setAdapter(new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,findAllPairsEasyActivity.getList()));


        Log.i("list","findAllPairsList content: " + findAllPairsEasyActivity.getList().size());

        totalScoreView.setTypeface(logoFont);
        totalScoreView.setText("Total score: " + total_score);
    }
}

提前谢谢您!

最佳答案

如果动机只是发送数据,是否真的有必要将数据保存在 SharedPreference 中?

为什么不直接使用 putExtra 发送数据并使用 getSerializedExtra 获取数据?

Activity FindAllPairsEasyActivity:

ArrayList<Integer> findAllPairsList = new ArrayList<Integer>();
intent.putExtra("my_list", findAllPairsList);
startActivity(intent);

Activity 进度 Activity :

ArrayList<Integer> findAllPairsList = getIntent().getSerializableExtra("my_list");

关于java - 如何将List的内容传递给另一个Android Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59575500/

相关文章:

java - 正确处理 Intents 以修复 ActivityNotFoundException

java - 在我的项目中哪里可以找到 proguard.cfg?

android - ProGuard 和 AdMob 的问题

android - 在 Android Studio/gradle 中构建时,API 版本 23 中未调用 dx.bat

android-studio - 我什么时候应该同步,什么时候应该在 Android Studio 中构建/重建项目,我可以自动化它吗?

java - headless /CLI LibGDX

java - 捕获 Java/Android 内存不足

java - jtextpane 突出显示仅突出显示第一个实例

android - Android Studio 中的 Java 模块引用

android - 如何在 Android Studio 中将库导出到 Jar?