所以基本上我是一個在 Android Studio 中編碼的初學者,到目前為止,我正在制作一個使用 Recycler View 的應用程式,該視圖將在 main_activity 下顯示不同的影像,當點擊時會將你引導到它們各自的詳細資訊活動。因此,在詳細資訊活動中,我放置了一個可編輯的文本,允許用戶輸入他們對圖片中顯示的節目的想法,然后他們可以保存通過按鈕輸入的文本,當他們關閉應用程式時,他們可以使用檢索按鈕來檢索他們輸入的內容,我為此使用了 sharedPreferences 。我還使用了 Intent 和 Bundle,以便應用程式知道它應該引導您的位置。
所以我的困境是,在細節活動中找到的可編輯文本取決于在 main_activity 上選擇了什么圖片。因此它不應該是相同的,不能將顯示 A 上的型別和保存的內容帶到顯示 B。任何建議都非常感謝。
這是我的 main_activity 的代碼
RecyclerView rv;
RecyclerAdapter ra;
Intent i1;
Bundle b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//code below for recyclerView and setOnclickListener
//--------------------------------------------------
b1 = new Bundle();
rv = findViewById(R.id.recyclerView);
rv.setLayoutManager(new GridLayoutManager(this, 2));
ra = new RecyclerAdapter(this);
ra.setOnClickListener(new AnimeClickListener() {
@Override
public void OnClick(View view, int position) {
i1 = new Intent(getApplicationContext(),anime_details.class);
b1.putInt("position", position);
i1.putExtras(b1);
startActivityForResult(i1, 1);
}
});
rv.setAdapter(ra);
這是我的 details_activity 的代碼
Intent i2;
Bundle b2;
ImageView poster;
TextView animeName;
int position = 0;
EditText contentText;
SharedPreferences sp;
SharedPreferences.Editor spe;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
b2 = new Bundle();
setContentView(R.layout.activity_anime_details);
i2 = getIntent();
b2 = i2.getExtras();
position = b2.getInt("position",0);
animeName = findViewById(R.id.nameAnime);
poster = findViewById(R.id.animePoster);
contentText = findViewById(R.id.edit_textContents);
poster.setImageDrawable(getResources().obtainTypedArray(R.array.atImages).getDrawable(position));
animeName.setText(getResources().getStringArray(R.array.animeTitles)[position]);
sp = getSharedPreferences("myPref", MODE_PRIVATE);
}
public void saveText(View v){
spe = sp.edit();
spe.putString("content", contentText.getEditableText().toString());
spe.commit();
}
public void retrieveText(View v){
contentText.setText(sp.getString("content",""));
}
這是該應用程式的外觀以供參考
uj5u.com熱心網友回復:
嘗試改用這些行:
spe.putString("content" position, contentText.getEditableText().toString());
和
contentText.setText(sp.getString("content" position,""));
這樣,您可以根據單擊的位置存盤不同的首選項。
請注意,理想的解決方案涉及使用資料庫。我只是以這種方式向您展示,因為您是初學者。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/489555.html
