2012-03-19 3 views
0

AdWhirl을 내 앱에 추가하려하지만 간단한 "HelloWorld"로 시작하여 내가하는 일을 알고 있는지 확인하기로 결정했습니다. 물론 충분하지 않다 ... 나는이 코드를 the AdWhirl Android SDK Setup page에서 얻었지만 실행하려고하면이 예외가 발생한다. java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 예외 메시지로 removeView()를 시도 했으므로 라인 layout.addView(adWhirlLayout, layoutParams)에서 발생한다. 뿐만 아니라 removeAllViews() 제안하지만 여전히이 오류가 발생합니다.AdWhirl이 IllegalStateException을 야기 함

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="fill_parent" 
android:layout_height="fill_parent" android:id="@+id/layout_main"> 
<com.adwhirl.AdWhirlLayout 
    android:layout_height="wrap_content" android:layout_width="fill_parent" 
    android:id="@+id/adwhirl_layout"></com.adwhirl.AdWhirlLayout> 
</LinearLayout> 

및 오류 :이 내 main.xml에있다

package hello.adwhirl; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Gravity; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 
import android.widget.RelativeLayout.LayoutParams; 
import android.widget.TextView; 

import com.adwhirl.AdWhirlLayout; 
import com.adwhirl.AdWhirlLayout.AdWhirlInterface; 
import com.adwhirl.AdWhirlManager; 
import com.adwhirl.AdWhirlTargeting; 

public class HelloAdWhirl extends Activity implements AdWhirlInterface { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     AdWhirlManager.setConfigExpireTimeout(1000 * 60 * 5); 

     AdWhirlTargeting.setAge(23); 
     AdWhirlTargeting.setGender(AdWhirlTargeting.Gender.MALE); 
     AdWhirlTargeting.setKeywords("online games gaming"); 
     AdWhirlTargeting.setPostalCode("94123"); 
     AdWhirlTargeting.setTestMode(false); 

     AdWhirlLayout adWhirlLayout = (AdWhirlLayout) findViewById(R.id.adwhirl_layout); 

     TextView textView = new TextView(this); 
     RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     int diWidth = 320; 
     int diHeight = 52; 
     int density = (int) getResources().getDisplayMetrics().density; 

     adWhirlLayout.setAdWhirlInterface(this); 
     adWhirlLayout.setMaxWidth((int) (diWidth * density)); 
     adWhirlLayout.setMaxHeight((int) (diHeight * density)); 

     layoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL); 
     textView.setText("Below AdWhirlLayout"); 

     LinearLayout layout = (LinearLayout) findViewById(R.id.layout_main); 

     layout.setGravity(Gravity.CENTER_HORIZONTAL); 
     layout.addView(adWhirlLayout, layoutParams); 
     layout.addView(textView, layoutParams); 
     layout.invalidate(); 
    } 

    public void adWhirlGeneric() { 
     // TODO Auto-generated method stub 
     System.out.println("Do stuff"); 
    } 
} 

: 아래

는 자바 파일입니다

03-19 15:35:54.218: ERROR/AndroidRuntime(3510): FATAL EXCEPTION: main 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510): java.lang.RuntimeException: Unable to start activity ComponentInfo{hello.adwhirl/hello.adwhirl.HelloAdWhirl}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2833) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2854) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.app.ActivityThread.access$2300(ActivityThread.java:136) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2179) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.os.Looper.loop(Looper.java:143) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.app.ActivityThread.main(ActivityThread.java:5061) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at java.lang.reflect.Method.invoke(Method.java:521) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at dalvik.system.NativeStart.main(Native Method) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.view.ViewGroup.addViewInner(ViewGroup.java:1992) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.view.ViewGroup.addView(ViewGroup.java:1887) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.view.ViewGroup.addView(ViewGroup.java:1867) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at hello.adwhirl.HelloAdWhirl.onCreate(HelloAdWhirl.java:50) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1066) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2797) 
03-19 15:35:54.218: ERROR/AndroidRuntime(3510):  ... 11 more 
+0

스택 트레이스와 범행 행이 강조 표시되어야합니다. – Snicolas

+0

범인 행을 어떻게 강조합니까? 처음에 언급했습니다. – Stephanie

답변

2

귀하의 AdWhirlLayout 실제로 이미 정의되어 당신의 XML이므로 다시 추가 할 필요가 없습니다 (layout.addView(adWhirlLayout, layoutParams); 행을 삭제할 수 있습니다. 귀하의 ADWHIRL_KEY이 매니페스트 파일에 올바르게 포함되어 있다면 제대로 작동합니다.

+0

해당 행을 제거하면 실행되지만 아무 것도 표시되지 않고 "Below AdWhirlLayout." 매니페스트 파일에 adwhirl 키가 있습니다. – Stephanie

+0

방금 ​​logcat을보고 순환 게재 광고가 없기 때문에 표시되지 않음을 알았습니다. – Stephanie