//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. 从线程开始活动