从意图回来,做点什么

时间:2014-03-19 11:25:35

标签: android android-intent

我有一个使用listView的android应用程序。单击列表中的任何项目后,它会显示AlertDialog,您可以在其中选择编辑或删除。单击编辑后,它会启动一个新的意图,发送一些额外的字符串来填充表单进行编辑。我想点击EditActivity中的按钮保存后刷新列表。

我已经阅读了notifyDataSetChanged(),我认为它可以正常工作我只想知道MainClass(listView类)中是否有任何方法,并且在我回来后立即执行来自intent,在EditActivity中单击“保存”按钮后立即执行。

或者,我可以在notifyDataSetChanged()开始活动后添加MainActivity方法吗?

4 个答案:

答案 0 :(得分:1)

您可以在活动onResume()函数中添加listView.notifyDataSetChanged()。

@Override
public void onResume(){
super.onResume();
yourListView.notifyDataSetChanged();
}

答案 1 :(得分:1)

在您的主要课程中打开startActivityForResult()然后实施EditActivity方法时,请使用onActivityResult方法。在那里,您将能够使用notifyDataSetChanged

<强> Read this from the doc

答案 2 :(得分:1)

使用startActivityForResult来呼叫您的EditActivity这不是最简单的方式来做您想做的事情,但是这是的好方法),通过使用你可以找出你的编辑结果

Intent i = new Intent(this, EditActivity.class);
startActivityForResult(i, 1);

在EActivity中设置要返回MainActivity的数据

 Intent returnIntent = new Intent();
 returnIntent.putExtra("result",YOUR_RESULT); // skip if you do not want to return special result
 setResult(RESULT_OK,returnIntent);     
 finish();

如果您想发送取消操作(在您的情况下失败编辑),请使用此

Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);        
finish();

现在,在MainActivity课程中,请编写onActivityResult()方法

的以下代码
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

  if (requestCode == 1) {

     if(resultCode == RESULT_OK){  
         String result=data.getStringExtra("result");   // result sent from EditActivity    
         listViewAdapter. notifyDataSetChanged();         
     }
     if (resultCode == RESULT_CANCELED) {    
         //Write your code if there's no result
     }
  }
}//onActivityResult

答案 3 :(得分:1)

public class yourClass extends ListActivity {

//define a class variable here.
private ArrayAdapter<Friend> adapter;


@Override
public void onCreate(Bundle savedInstanceState){

//Change this line  setListAdapter(new ArrayAdapter<Friend>(this, android.R.layout.simple_list_item_1, db.getAllFriends()));

to

adapter =  new ArrayAdapter<Friend>(this, android.R.layout.simple_list_item_1, db.getAllFriends());

 setListAdapter(adapter);
}


@Override
public void onResume(){
super.onResume();
adapter.notifyDataSetChanged();
}


}