2011-10-21 129 views
1

我有一个活动A,它有一个按钮和一个显示书名的列表视图。点击按钮后,活动B开始,用户填写书籍表格并保存。当他按下按钮时,用户来到活动A.在这里,应该在列表视图中更新书名。我想我必须在onResume()中编写一些代码。你能告诉我该写什么吗?我正在使用自定义列表视图。在android中重新启动活动

回答

0

开始活动B与startActivityForResult()和使用方法onActivityResult()重新启动或处理新数据

例如,要启动活动B:

String callingActivity = context.getLocalClassName(); 
Intent newActivity = new Intent(getApplicationContext(),ActivityB.class); 
newActivity.setData(Uri.parse(callingActivity)); 
startActivityForResult(newActivity, 0); 

然后在您的活动A类的某处:

protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
     if(requestCode == 0){ 
      // do processing here 
     } 
    } 

其他答案应该足够了,但是可以在通过其他方式恢复活动的情况下调用onResume()。

要简单地重新启动活动A,当用户从活动B按后退按钮,然后把onActivityResult内的以下内容:

if(requestCode == 0){ 
      finish(); 
      startActivity(starterintent); 

     } 

而且在活动A的OnCreate,加starterintent = getIntent();

只记得在你的onCreate被调用之前的某个地方启动变量Intent starterintent;

例如

public class ActivityA extends ListActivity { 
    Intent starterintent; 

    public void onCreate(Bundle b){ 
    starterintent = getIntent(); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    if(requestCode == 0){ 
     finish(); 
     startActivity(starterintent); 
    } 
    } 

    private void startActivityB(){ 
    String callingActivity = context.getLocalClassName(); 
    Intent newActivity = new Intent(getApplicationContext(),ActivityB.class); 
    newActivity.setData(Uri.parse(callingActivity)); 
    startActivityForResult(newActivity, 0); 
    } 

} 

然后只需调用startActivityB()从一个按钮,点击或任何

+0

我需要从活动B.发送数据。如果我需要发送,如何发送数据。 –

+0

@prabhuM取决于你的数据存储方式。如果它被保存到数据库,文件,甚至共享首选项,那么否,活动A将能够访问它,只要用户在回退之前实际上将数据保存在活动B中。无论如何,我不知道通过后退按钮操作传递数据的方式。 – aperture

0

是的,你是对的。在onResume中编写代码。

当您更新日期时,请致电notifyDataSetChanged();为您的ListView适配器

希望,它可以帮助你!

0

您可以在用户按下保存时开始活动,它会为您解决它。 或者,如果你想按回:

@Override 
public void onResume(){ 
    super.onResume(); 
    list.clear(); 
    list.addAll(getBooks()); 
    adapter.notifyDataSetChanged(); 
} 
相关问题