2014-10-07 4 views
0

four문자열을 사용하고 있습니다.발생 원인 : java.lang.IllegalArgumentException : 호스트 이름이 null이 아니어도됩니다.

String fourth = first+second+third; 
다음 first 문자열은 second 문자열 (사용자가 입력) 사용자 호스트 URL의 third는 " /musics/a.mp3"을 포함을 포함하고 fourth 문자열은 다음과 같이 이전 문자열을 결합하여, 전체 URL을 포함, " http://"를 포함

new JSONAsyncTask().execute(fourth); 

을 그리고 난 다음 오류 받고 있어요 :

은 그 때 나는 다음과 같이의 실행 AsyncTaskfourth 문자열을 사용하고 있습니다.

로그 :

10-07 06:17:15.934: E/AndroidRuntime(1194): FATAL EXCEPTION: AsyncTask #1 
10-07 06:17:15.934: E/AndroidRuntime(1194): java.lang.RuntimeException: An error occured while executing doInBackground() 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at android.os.AsyncTask$3.done(AsyncTask.java:278) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at java.util.concurrent.FutureTask.run(FutureTask.java:137) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at java.lang.Thread.run(Thread.java:856) 
10-07 06:17:15.934: E/AndroidRuntime(1194): Caused by: java.lang.IllegalArgumentException: Host name may not be null 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at org.apache.http.HttpHost.<init>(HttpHost.java:83) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at org.apache.http.impl.client.AbstractHttpClient.determineTarget(AbstractHttpClient.java:497) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at com.app.ifko.HomeActivity$JSONAsyncTask.doInBackground(HomeActivity.java:101) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at com.app.ifko.HomeActivity$JSONAsyncTask.doInBackground(HomeActivity.java:1) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at android.os.AsyncTask$2.call(AsyncTask.java:264) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 
10-07 06:17:15.934: E/AndroidRuntime(1194):  ... 5 more 
10-07 06:17:22.764: E/WindowManager(1194): Activity com.app.ifko.HomeActivity has leaked window [email protected] that was originally added here 
10-07 06:17:22.764: E/WindowManager(1194): android.view.WindowLeaked: Activity com.app.ifko.HomeActivity has leaked window [email protected] that was originally added here 
10-07 06:17:22.764: E/WindowManager(1194): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:343) 
10-07 06:17:22.764: E/WindowManager(1194): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:245) 
10-07 06:17:22.764: E/WindowManager(1194): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:193) 
10-07 06:17:22.764: E/WindowManager(1194): at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:118) 
10-07 06:17:22.764: E/WindowManager(1194): at android.view.Window$LocalWindowManager.addView(Window.java:537) 
10-07 06:17:22.764: E/WindowManager(1194): at android.app.Dialog.show(Dialog.java:274) 
10-07 06:17:22.764: E/WindowManager(1194): at com.app.ifko.HomeActivity$JSONAsyncTask.onPreExecute(HomeActivity.java:90) 
10-07 06:17:22.764: E/WindowManager(1194): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561) 
10-07 06:17:22.764: E/WindowManager(1194): at android.os.AsyncTask.execute(AsyncTask.java:511) 
10-07 06:17:22.764: E/WindowManager(1194): at com.app.ifko.HomeActivity.onCreate(HomeActivity.java:74) 
10-07 06:17:22.764: E/WindowManager(1194): at android.app.Activity.performCreate(Activity.java:4465) 
10-07 06:17:22.764: E/WindowManager(1194): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
10-07 06:17:22.764: E/WindowManager(1194): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
10-07 06:17:22.764: E/WindowManager(1194): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
10-07 06:17:22.764: E/WindowManager(1194): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
10-07 06:17:22.764: E/WindowManager(1194): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
10-07 06:17:22.764: E/WindowManager(1194): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-07 06:17:22.764: E/WindowManager(1194): at android.os.Looper.loop(Looper.java:137) 
10-07 06:17:22.764: E/WindowManager(1194): at android.app.ActivityThread.main(ActivityThread.java:4340) 
10-07 06:17:22.764: E/WindowManager(1194): at java.lang.reflect.Method.invokeNative(Native Method) 
10-07 06:17:22.764: E/WindowManager(1194): at java.lang.reflect.Method.invoke(Method.java:511) 
10-07 06:17:22.764: E/WindowManager(1194): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
10-07 06:17:22.764: E/WindowManager(1194): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
10-07 06:17:22.764: E/WindowManager(1194): at dalvik.system.NativeStart.main(Native Method) 
10-07 06:17:24.144: I/Process(1194): Sending signal. PID: 1194 SIG: 9 

활동 코드 : URL의 호스트 부분은 사용자로부터 오는 경우

public class HomeActivity extends Activity { 

String first, second, third, fourth; 
TextView etTextToSave; 
private SharedPreferences sharedprefs; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.home); 

    etTextToSave = (TextView) findViewById(R.id.etTextToSave);  

    sharedprefs = getSharedPreferences("MyPrefs", MODE_PRIVATE); 
    etTextToSave.setText(sharedprefs.getString("SharedPrefsData","")); 

    second = etTextToSave.getText().toString();  

    first = "http://"; 
    third = "/musics/a.mp3";    
    fourth = first+second+third; 

    ......................... 

    new JSONAsyncTask().execute(fourth); 

} 
+0

예, null이 예외를 제어 할 수 있습니까? – Sophie

+1

새로운 JSONAsyncTask(). execute (fourth); 앞에'Log' 또는'SOP'를 넣고'fourth' 문자열을 확인하십시오. – Rustam

+0

asynctask에 URL을 기록 하시겠습니까? 귀하의 '두 번째'는 sharedPrefs에 포함 된 것 ""이라고 생각합니다. –

답변

1

, 당신은 URL을 구성하는 데 사용하기 전에 확인해야 .

second이 null 인 경우 new JSONAsyncTask().execute(fourth);으로 전화하지 마십시오.

0

onCreate()으로 지정하면 반환되는 텍스트는 기본적으로 레이아웃에 있으며 사용자가 입력 한 텍스트가 아닙니다.

onclick 수신기 등을 사용하고 있지만이 경우 getText()을 클릭 핸들러로 이동하면 코드가 표시되지 않습니다.

관련 문제