0
我是Android新手。 我正在編寫一個應用程序,這取決於用戶輸入的URL以使其工作。我的主要活動中有代碼,用於檢測是否設置了用戶首選項。如果不是,則會打開一個編輯偏好活動。Android偏好不在應用程序中生效
但是,我的應用程序在「註冊」我的新pref設置之前必須至少崩潰一次或兩次。我該如何解決這個問題?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
// integrate our shared preferences settings
sharedPrefs = PreferenceManager
.getDefaultSharedPreferences(this);
prefix = sharedPrefs.getString("manual_fetch_domain", "");
if (prefix.length() < 7) {
startActivity(new Intent(this, EditSettingsActivity.class));
}
}
public void onPrimaryClick(View view) {
Intent intent = new Intent(getApplicationContext(),
PrimaryImageGridActivity.class);
//confirm our settings
if (prefix.length() < 7) {
startActivity(new Intent(this, EditSettingsActivity.class));
}
String readTwitterFeed = readTwitterFeed(prefix + Constants.SERVER_URL);
List<String> where = new ArrayList<String>();
int k = 0;
if (readTwitterFeed != null) {
//code here
}
}
public String readTwitterFeed(String y) {
StringBuilder builder = new StringBuilder();
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(y);
try {
HttpResponse response = client.execute(httpGet);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if (statusCode == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(
new InputStreamReader(content), 16384);
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// error check again
String tmp = builder.toString();
if (tmp.length() < 2)
return null;
else
return builder.toString();
}
我的日誌貓科如下:
07-10 13:23:18.818: E/AndroidRuntime(767): FATAL EXCEPTION: main
07-10 13:23:18.818: E/AndroidRuntime(767): java.lang.IllegalStateException: Could not execute method of the activity
07-10 13:23:18.818: E/AndroidRuntime(767): at android.view.View$1.onClick(View.java:3599)
07-10 13:23:18.818: E/AndroidRuntime(767): at android.view.View.performClick(View.java:4204)
07-10 13:23:18.818: E/AndroidRuntime(767): at android.view.View$PerformClick.run(View.java:17355)
07-10 13:23:18.818: E/AndroidRuntime(767): at android.os.Handler.handleCallback(Handler.java:725)
07-10 13:23:18.818: E/AndroidRuntime(767): at android.os.Handler.dispatchMessage(Handler.java:92)
07-10 13:23:18.818: E/AndroidRuntime(767): at android.os.Looper.loop(Looper.java:137)
07-10 13:23:18.818: E/AndroidRuntime(767): at android.app.ActivityThread.main(ActivityThread.java:5041)
07-10 13:23:18.818: E/AndroidRuntime(767): at java.lang.reflect.Method.invokeNative(Native Method)
07-10 13:23:18.818: E/AndroidRuntime(767): at java.lang.reflect.Method.invoke(Method.java:511)
07-10 13:23:18.818: E/AndroidRuntime(767): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-10 13:23:18.818: E/AndroidRuntime(767): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-10 13:23:18.818: E/AndroidRuntime(767): at dalvik.system.NativeStart.main(Native Method)
07-10 13:23:18.818: E/AndroidRuntime(767): Caused by: java.lang.reflect.InvocationTargetException
07-10 13:23:18.818: E/AndroidRuntime(767): at java.lang.reflect.Method.invokeNative(Native Method)
07-10 13:23:18.818: E/AndroidRuntime(767): at java.lang.reflect.Method.invoke(Method.java:511)
07-10 13:23:18.818: E/AndroidRuntime(767): at android.view.View$1.onClick(View.java:3594)
07-10 13:23:18.818: E/AndroidRuntime(767): ... 11 more
07-10 13:23:18.818: E/AndroidRuntime(767): Caused by: java.lang.IllegalStateException: Target host must not be null, or set in parameters. scheme=null, host=null, path=/
07-10 13:23:18.818: E/AndroidRuntime(767): at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:591)
07-10 13:23:18.818: E/AndroidRuntime(767): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:293)
07-10 13:23:18.818: E/AndroidRuntime(767): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
07-10 13:23:18.818: E/AndroidRuntime(767): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
07-10 13:23:18.818: E/AndroidRuntime(767): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
07-10 13:23:18.818: E/AndroidRuntime(767): at com.src.shady.MainActivity.readTwitterFeed(MainActivity.java:118)
07-10 13:23:18.818: E/AndroidRuntime(767): at com.src.shady.MainActivity.onPrimaryImageGridClick(MainActivity.java:67)
請張貼logcat的。理想情況下,首先你自己看看 - 你可能會從那裏看到你錯誤的地方。 – IanB
我得到一個java.lang.IllegalStateException的行 – user1801060
readTwitterFeed(前綴+ Constants.SERVER_URL); 。前綴爲空,所以應用程序讀取格式不正確的URL並引發此異常 – user1801060