Android 如何在返回上一活动时保存编辑文本

Android 如何在返回上一活动时保存编辑文本,android,listview,Android,Listview,可能是我的问题错了。但是当我在listview中单击项目时,我打开了其他活动来编辑项目名称文本,之后当我按back press时,它正在保存,但没有重命名到listview。因此,请帮助我 listview类: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.settings_view); li

可能是我的问题错了。但是当我在listview中单击项目时,我打开了其他活动来编辑项目名称文本,之后当我按back press时,它正在保存,但没有重命名到listview。因此,请帮助我

listview类:

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();
     }