//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. 從動態URL提供靜態內容
- 6. 從onClickListener開始內部RecyclerView活動
- 7. 從標籤內容開始新活動時,標籤消失
- 8. 從片段的意圖開始活動開始空白活動
- 9. 動態從可擴展列表動態地開始活動
- 10. 靜態內容
- 11. 靜態內容
- 12. 如何從singleInstance活動開始活動?
- 13. 從非活動開始活動
- 14. 靜態的活動
- 15. Android的 - 使靜態內部類活動
- 16. 靜態範圍內的活動聯盟
- 17. 靜態內容但動態內容的XSL-FO頁腳?
- 18. 從LockScreen開始活動
- 19. 從活動開始片段
- 20. 從通知開始活動
- 21. 從活動開始BroadCastReceiver
- 22. 從活動開始DialogFragment
- 23. 從RemoteViewsFactory開始活動
- 24. 從packageinfo開始活動
- 25. Android:從MenuItem開始活動
- 26. 從片段開始活動
- 27. 從活動開始服務
- 28. 從broadcastReceiver開始multilple活動
- 29. Android:從BroadcastReceiver開始活動
- 30. 從線程開始活動