簡體   English   中英

在“新的Intent(ContactsContract.Intents.Insert.ACTION)”啟動的活動完成后,如何刷新ListView?

[英]How do I refresh my ListView after the Activity launched by “new Intent(ContactsContract.Intents.Insert.ACTION)” finishes?

我有一個類( Contacts.java ),它擴展了Activity並具有一個帶有3 TabHost

    TabHost tabHost = (TabHost) findViewById(R.id.tabhost);

    LocalActivityManager mlam = new LocalActivityManager(this, false);
    mlam.dispatchCreate(savedInstanceState);
    tabHost.setup(mlam);
    TabHost.TabSpec spec;

    Intent intentA = new Intent().setClass(this, A.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    spec = tabHost.newTabSpec("A").setIndicator("A").setContent(intentA);
    tabHost.addTab(spec);

    Intent intentB = new Intent().setClass(this, B.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    spec = tabHost.newTabSpec("B").setIndicator("B").setContent(intentB);
    tabHost.addTab(spec);

    Intent intentC = new Intent().setClass(this, C.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    spec = tabHost.newTabSpec("C").setIndicator("C").setContent(intentC);
    tabHost.addTab(spec);

每個類(A.java,B.java和C.java)顯示一個不同的聯系人列表。 注意:我不使用ListActivity,而是使用帶有ListView的Activity。

我有兩個問題:

  1. 選擇聯系人時,我將轉到另一個ListActivity(Options.java),其中包含有關所選聯系人的選項。 好吧,當我從Options.java中按下“后退”按鈕時,以前的聯系人列表為空。 我如何看到聯系人??? 我試圖處理“后退”按鈕以返回A.class,但是,它離開了常規應用程序。 注意:所有意圖都用Intent.FLAG_ACTIVITY_CLEAR_TOP聲明。

  2. 我在A.class的菜單按鈕中添加了一個選項。 此選項是“添加新聯系人”:

     @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater=new MenuInflater(getApplicationContext()); inflater.inflate(R.menu.options_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_add_contact: Intent addContactIntent = new Intent(ContactsContract.Intents.Insert.ACTION); addContactIntent.setData(ContactsContract.Contacts.CONTENT_URI); startActivity(addContactIntent); break; } return true; } 

如何等待完成活動以使用新聯系人更新聯系人列表? 我努力了:

  • 使用finish(); 和finishFromChild(A.this); 在“中斷”之前,但是它離開了常規應用程序,而不是僅關閉A.class來重新創建。
  • 使用startActivityForResult()而不是帶有onActivityResult()的startActivity(),但是我不知道將setResult()和finish()放在哪里,因為Intent addContactIntent = new Intent(ContactsContract.Intents.Insert.ACTION)是本機的Intent安卓
  • 在“返回真”之前刷新列表,但這是在添加聯系人之前完成的。
  • 我在Contact.class中添加了偵聽器,以檢測更改並在每個子級中調用onResume()方法,但是什么也不做:

Contact.class:

    tabHost.setOnTabChangedListener(new OnTabChangeListener() {
        public void onTabChanged(String tabId) {
            String currentTag = tabHost.getCurrentTabTag();
            if(currentTag.equals("A")){
                //intentA.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                mlam.startActivity(currentTag, new Intent(intentA));
            } else if(currentTag.equals("B")){
                //intentB.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                mlam.startActivity(currentTag, new Intent(intentB));
            }else if(currentTag.equals("C")){
                //intentC.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
                mlam.startActivity(currentTag, new Intent(intentC));
            }
        }
    });*/

一類 ...:

    @Override
    public void onResume() {
    super.onResume();
    //refresh code

}

使用startActivityForResult()並重寫onActivityResult可以知道開始的活動何時結束

Contacts.java onResume方法內部,重新初始化所有列表。 因此,每次您回到Contacts.java活動時, Contacts.java列表都會刷新...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM