2012-06-06 121 views
0

我有一個應用程序,其中包含一個tabhost。我正在使用AsyncTask在後臺執行一些互聯網工作。現在在onPostExecute,我希望它開始一個新的活動。當我創建一個新的意圖時,顯示新的活動,但沒有標籤..這只是活動。Android創建意圖開始活動

現在我已經在網上閱讀了如何做到這一點,並且我設法進入了我認爲正確的方向。這是整個代碼:

package com.appsoweb.kvodeventer; 

import org.json.JSONObject; 

import android.app.Activity; 
import android.app.ActivityGroup; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 

public class KVOMeldingen extends ActivityGroup { 

    public static final JSONObject jsonResult = null; 
    Button bLogin, bCreateAccount, bResetPassword; 
    EditText etUsername, etPassword; 
    static String Username; 
    static String Password; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.meldingen); 
     final EditText etUsername = (EditText) findViewById(R.id.etUsername); 
     final EditText etPassword = (EditText) findViewById(R.id.etPassword); 
     Button bLogin = (Button) findViewById(R.id.bLogin); 
     Button bCreateAccount = (Button) findViewById(R.id.bCreateAccount); 
     Button bResetPassword = (Button) findViewById(R.id.bResetPassword); 

     bLogin.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if (etUsername.length() <= 0) { 
        etUsername.setError("Veld mag niet leeg zijn"); 
       } else if (etPassword.length() <= 0) { 
        etPassword.setError("Veld mag niet leeg zijn"); 
       } else { 
        Username = etUsername.getText().toString(); 
        Password = etPassword.getText().toString(); 
       } 
       LoginTask NDLT = new LoginTask(); 
       NDLT.execute(); 
      } 
     }); 

     bCreateAccount.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 
       // Doe iets hier....... 

      } 

     }); 

     bResetPassword.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // Doe iets hier........ 

      } 

     }); 

    } 

    public static String getUsername() { 
     return Username; 
    } 

    public static String getPassword() { 
     return Password; 
    } 

    class LoginTask extends AsyncTask<Void, Void, JSONObject> { 

     ProgressDialog waitingDialog; 

     @Override 
     protected void onPreExecute() { 
      waitingDialog = new ProgressDialog(KVOMeldingen.this); 
      waitingDialog.setMessage("Laden..."); 
      waitingDialog.show(); 
      super.onPreExecute(); 
     } 

     @Override 
     protected JSONObject doInBackground(Void... params) { 

      JSONObject json = JsonFunctionLogin 
        .getJsonLoginResult("http://api.crossalertdeventer.nl/login.json"); 
      return json; 

     } 

     @Override 
     protected void onPostExecute(JSONObject json) { 
      super.onPostExecute(json); 
      if (waitingDialog.isShowing()) { 
       waitingDialog.dismiss(); 
       Log.d("iets gebeurt", "gedaan"); 
      } 
      try { 

       String LoginResult = json.getString("login"); 
       String UserIdResult = json.getString("user_id"); 
       Log.d("LoginResult", LoginResult); 
       Log.d("LoginUserId", UserIdResult); 
       json = null; 
       Intent intent = new Intent(KVOMeldingen.this, KVOCards.class); 

       View view = getLocalActivityManager().startActivity("KVOCards", intent 
               .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)) 
               .getDecorView(); 

       replaceView(view); 


      } catch (Exception e) { 
       Log.e("KVOMeldingen", "error" + e.getMessage()); 
      } 

     } 

     public void replaceView(View v){ 
      setContentView(v); 
     } 
    } 

} 

正如你所看到的:我創建了一個將顯示低谷的Inten噸視圖。但意圖不會在onbackground後啓動。它給我一個錯誤:

無法啓動活動componentInfo無法添加窗口...令牌.....無效......您的應用程序是否運行?

我在做什麼錯了?

日Thnx提前

回答

1

開始一個新的活動意味着您從TabActivity導航到一個正常的活動。顯然你在Activity中找不到選項卡。您必須替換視圖而不是創建活動。

下面是如何在TabActivity中使用ActivityGroup的一個很好的例子。

http://web.archive.org/web/20100816175634/http://blog.henriklarsentoft.com/2010/07/android-tabactivity-nested-activities/

但還是這種方法已被棄用。你可能不得不考慮使用片段。

採取這裏一看,http://developer.android.com/resources/samples/Support4Demos/src/com/example/android/supportv4/app/FragmentTabs.html

+0

日Thnx對您有所幫助。但爲什麼這個代碼棄用?這是一個與sdk版本有關的bug嗎? –