2013-01-24 39 views
-1

我有搜索,沒有找到答案。我想調用startActvity(newintent),但頁面不會更改。 這是我的代碼:

public class MainActivity extends Activity { 
private TextView IdPeserta, Password; 
//private ArrayList<NameValuePair> authentication; 
@SuppressWarnings("unused") 
//private String temp, _nama = ""; 
//private readURL rL; 

public static String username = ""; 
public static String password = ""; 
public static String status = "FALSE"; 

public void setPassword(String password){ 
    MainActivity.password = password; 
} 

public void setUsername(String username){ 
    MainActivity.username = username; 
} 

public void setStatus(String status){ 
    MainActivity.status = status; 
} 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.main); 
    IdPeserta = (TextView) findViewById(R.id.idPeserta); 
    Password = (TextView) findViewById(R.id.password); 
}  

public void Login(View view){ 
    setUsername(IdPeserta.getText().toString()); 
    setPassword(Password.getText().toString()); 
    if((IdPeserta.getText().length() > 0 && Password.getText().length() > 0)){ 
     RestTask task = new RestTask(); 
     task.applicationContext = MainActivity.this; 
     task.execute(); 
    }else{ 
     Toast.makeText(this,"fill Id Peserta and Password 1", 0).show(); 
    } 
} 

public void authenticate(){ 
    if(status.equals("TRUE")){ 
     Intent i = new Intent(MainActivity.this, Home.class); 
     //PendingIntent pending = PendingIntent.getActivity(this, 0, i, 0); 
     startActivity(i); 
     finish(); 
    }else if(status.equals("FALSE")){ 
     Log.d("gagal", "coba lagi"); 
    } 
} 

public static String getService() { 

    String responseString = null; 

    String baseurlString = "http://10.0.2.2:8080/UjianServices/authentikasi.php"; 

    RestClient client = new RestClient(baseurlString); 
    client.AddParam("id_peserta", MainActivity.username); 
    client.AddParam("password", MainActivity.password); 

    try { 
     client.Execute(RequestMethod.POST); 
    } catch (Exception e) { 
     Log.d("error", e.getMessage()); 
     //e.printStackTrace(); 
    } 

    responseString = client.getResponse(); 

    return responseString; 
} 

public class RestTask extends AsyncTask<Object, Object, Object>{ 
    private ProgressDialog dialog; 
    protected Context applicationContext; 

    @Override 
    protected void onPreExecute() { 
     this.dialog = ProgressDialog.show(applicationContext, "Calling", "Time Service...", true); 
    } 

    @Override 
    protected void onPostExecute(Object result) { 
     this.dialog.cancel(); 
     String status = result.toString(); 
     setStatus(status); 
     authenticate(); 
    } 

    @Override 
    protected Object doInBackground(Object... arg0) { 
     return MainActivity.getService(); 
    } 
} 

} 

當我沒使用RestTask它可以改變頁面。我如何改變我的活動?

+0

安置自己的logcat出任何錯誤,堆棧跟蹤等 –

回答

0

因爲applicationContext爲空你還沒有使用它的顯示從onPreExecuteProgressDialog之前初始化applicationContext

你需要使用顯示ProgressDialog之前初始化applicationContext或只是使用MainActivity.this爲:

@Override 
    protected void onPreExecute() { 
     applicationContext=MainActivity.this; //<<< initialize context here 
     this.dialog = ProgressDialog.show(applicationContext, 
           "Calling", "Time Service...", true); 
    } 
+0

我已經做到了。請參閱我的登錄方法。我試圖將它添加到onPreExecute()方法中,但結果相同。 –

+0

@FaisalSilitonga:當應用程序崩潰時,plz發佈完整日誌 –

+0

應用程序不會崩潰,但活動不會更改。在logcat中有警告。警告說窗口已經集中忽略com.android.internal.view的焦點增益。 iinputmethod客戶端$存根$代理4148db78 –

相關問題