2013-07-10 30 views
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) 
+1

請張貼logcat的。理想情況下,首先你自己看看 - 你可能會從那裏看到你錯誤的地方。 – IanB

+0

我得到一個java.lang.IllegalStateException的行 – user1801060

+0

readTwitterFeed(前綴+ Constants.SERVER_URL); 。前綴爲空,所以應用程序讀取格式不正確的URL並引發此異常 – user1801060

回答

1

我猜你加入onClicklayout.xml文件,但:

  • layout.xml設爲活動和onClick未聲明(處理程序不存在)
  • layout.xml設置爲對話框(這是錯誤的,你需要添加OnClickListener處理措施)
+0

非常感謝。你是一個救星! – user1801060

相關問題