Android 如何在返回上一活动时保存编辑文本
可能是我的问题错了。但是当我在listview中单击项目时,我打开了其他活动来编辑项目名称文本,之后当我按back press时,它正在保存,但没有重命名到listview。因此,请帮助我 listview类:Android 如何在返回上一活动时保存编辑文本,android,listview,Android,Listview,可能是我的问题错了。但是当我在listview中单击项目时,我打开了其他活动来编辑项目名称文本,之后当我按back press时,它正在保存,但没有重命名到listview。因此,请帮助我 listview类: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.settings_view); li
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings_view);
listView=(ListView)findViewById(R.id.listView);
listView.invalidateViews();
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
final List<String> s = new ArrayList<String>();
for(BluetoothDevice bt : pairedDevices)
s.add(bt.getName());
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, s));
//listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
//listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> paramAdapterView, View paramView, int paramInt,
long paramLong) {
// TextView select_text=(TextView)viewClicked.findViewById(R.id.select_text);
String name=s.get(paramInt);
Intent i = new Intent(SettingOptionActivity.this, EditPreview.class);
i.putExtra("name", name);
startActivityForResult(i,0);
//Log.v("____string name________", "__________"+name);
//loadSavedPreferences(s.get(paramInt));
}
});
}
因此,请检查并帮助我。您可以尝试其他方法,而不是共享参考 //首先保存文本
@Override
public void onSaveInstanceState( Bundle outState )
{
super.onSaveInstanceState( outState );
outState.putInt( "textValue", editText.getText().toString() );
}
//加载文本
@Override
public void onCreate ( Bundle savedInstanceState )
{
....
if ( savedInstanceState != null )
{
editText.setText ( savedInstanceState.getString ( "textValue" ) );
}
....
}
我不太确定,但你可以
final List<String> s = new ArrayList<String>();
=> public static List<String> s; (Before the constructor)
在listview类中尝试以下操作:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> paramAdapterView, View paramView, int paramInt,
long paramLong) {
// TextView select_text=(TextView)viewClicked.findViewById(R.id.select_text);
String name=s.get(paramInt);
Intent i = new Intent(SettingOptionActivity.this, EditPreview.class);
i.putExtra("name", name);
i.putExtra("position", paramInt);
startActivityForResult(i,0);
//Log.v("____string name________", "__________"+name);
//loadSavedPreferences(s.get(paramInt));
}
});
}
以您的名义编辑类通行证位置,正如您从intent获得的。当您按Back键时,可能需要刷新上一个活动的onResume()方法中的listvistview。您的
saveData()
看起来像什么?嗯,如果我错了,请纠正我,但在这种情况下,状态仅保存在第二个“编辑活动”中,但是列表视图
项字符串不会以这种方式更新,因为它位于“第一个活动”中。此外,onSaveInstanceState
并不是为了持久化有价值的数据,只是为了持久化实例状态(尽管它们通常都是相同的)。@Drew Yes,你是korrect,但我的回答基于问题标题。这是我的错误。他在其他活动中打开的详细信息与.hi不同,但在添加mBluetoothAdapter.notifyDataSetChanged()时;在onResume()中,我得到此错误,类型BluetoothAdapter的方法notifyDataSetChanged()未定义。我再次得到此错误,类型BluetoothAdapter的方法notifyDataSetChanged()未定义。编辑了我的答案。应该是ArrayAdapter。。not BluetoothAdapter.mblueothAdapter没有刷新。它没有更新listview。我得到的名称仅与第一个相同。请帮助我。
s = new ArrayList<String>();
private ArrayAdapter<String> aa;
this.aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, s));
listView.setAdapter(this.aa);
this.aa.notifyDataSetChanged();
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> paramAdapterView, View paramView, int paramInt,
long paramLong) {
// TextView select_text=(TextView)viewClicked.findViewById(R.id.select_text);
String name=s.get(paramInt);
Intent i = new Intent(SettingOptionActivity.this, EditPreview.class);
i.putExtra("name", name);
i.putExtra("position", paramInt);
startActivityForResult(i,0);
//Log.v("____string name________", "__________"+name);
//loadSavedPreferences(s.get(paramInt));
}
});
onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 0 && resultCode == RESULT_OK) {
int position = data.getIntExtra("position", 0);
String newName = data.getIntExtra("name");
s.get(0).replace(oldname, newName );
yourAdapterObject.notifyDatasetChanged();
}