//Below is the entire class from which i'm trying to start an activity from
public class SimpleHttpClient extends Activity {
public static final int HTTP_TIMEOUT = 30 * 1000;
private static HttpClient mHttpClient;
private static HttpClient getHttpClient() {
if (mHttpClient == null) {
mHttpClient = new DefaultHttpClient();
final HttpParams params = mHttpClient.getParams();
HttpConnectionParams.setConnectionTimeout(params, HTTP_TIMEOUT);
HttpConnectionParams.setSoTimeout(params, HTTP_TIMEOUT);
ConnManagerParams.setTimeout(params, HTTP_TIMEOUT);
}
return mHttpClient;
}
public static String executeHttpPost(String url, ArrayList<NameValuePair> postParameters) throws Exception {
BufferedReader in = null;
try {
HttpClient client = getHttpClient();
HttpPost request = new HttpPost(url);
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
request.setEntity(formEntity);
HttpResponse response = client.execute(request);
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
in.close();
String result = sb.toString();
String disabled = "Disabled";
if (result.length() == 2)
{
return "Disabled";
}
else if (result.length() == 3)
{
// return "Logged In";
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
//it tells me i cannot reference from a static context
}
else if (result.length() == 5)
{
return "Unknown";
}
else if (result.length() == 4)
{
return "Incorrect Login Details";
}
else {
return result+"Unknown"+result.length();
}
}
finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static String executeHttpGet(String url) throws Exception {
BufferedReader in = null;
try {
HttpClient client = getHttpClient();
HttpGet request = new HttpGet();
request.setURI(new URI(url));
HttpResponse response = client.execute(request);
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
in.close();
String result = sb.toString();
return result;
}
finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
0
A
回答
0
startActivity
是Activity類非靜態方法,你正試圖從靜態方法,這就是爲什麼編譯器不開心調用它。您可以參考api簽名here
因此,無論從getHttpClient,executeHttpPost方法和從mHttpClient字段中刪除static關鍵字,它應該向前移動。
或者你可以使用上下文來調用startActivity這樣的:
context.startActivity(i);
又通方面同時創造意圖,而不是此引用。
0
您應該通過上下文的靜態方法:
public static String executeHttpPost(Context context, String url, ArrayList<NameValuePair> postParameters) throws Exception {
...
// return "Logged In";
Intent i = new Intent(context, MainActivity.class);
context.startActivity(i);
...
}
0
您需要提供一個Context
發動Intent
。在你的情況應該改變:
Intent i = new Intent(this, MainActivity.class);
startActivity(i);
到:
Context context;
// init context here or provide it as a static method argument
Intent i = new Intent(this, MainActivity.class);
context.startActivity(i);
所以方法應該是這樣的:
public static String executeHttpPost(Context context, String url, ArrayList<NameValuePair> postParameters) throws Exception {
// ...
else if (result.length() == 3)
{
Intent i = new Intent(this, MainActivity.class);
context.startActivity(i);
}
// ...
}
相關問題
- 1. 從靜態方法開始活動
- 2. 動態內容 - 我從哪裏開始?
- 3. 靜態內容中的動態內容
- 4. 靜態內容
- 5. 如何從singleInstance活動開始活動?
- 6. 從非活動開始活動
- 7. Android的 - 使靜態內部類活動
- 8. Android:從MenuItem開始活動
- 9. 從packageinfo開始活動
- 10. 從活動開始BroadCastReceiver
- 11. 從HTML開始活動
- 12. 從活動開始服務
- 13. 從活動開始服務
- 14. 從TimerTask類開始活動
- 15. 從活動開始片段
- 16. 從片段開始活動
- 17. 開始從Asynctask活動
- 18. 我想開始新的活動,當我點擊ListView的內容
- 19. 查看狀態,新的活動開始
- 20. docpad系統中的靜態與動態內容 - 如何創建動態內容?
- 21. CSS關鍵幀 - 動畫在內容已經靜態出現之後開始
- 22. 用靜態片段替換活動內容
- 23. 可移動內容的靜態蒙版
- 24. 如何在靜態軌道上創建靜態內容的靜態內容動態編輯選項
- 25. Rx用戶內的開始活動
- 26. 如何開始Android的內置活動
- 27. 從客戶端緩存中檢索靜態HTML內容(動態內容)
- 28. angular2-webpack-starter從靜態頁面開始
- 29. 非靜態變量從靜態內容調用java的
- 30. Android開發 - 從服務開始活動