2014-05-24 16 views
1

當您嘗試在視圖指定的孩子已經有一個parent.when我做layout.addView(按鈕,params);

mDescriptHelp = (TextView)view.findViewById(R.id.id_descript_help); 
mDescriptHelp.setTypeface(mFontUtils.getBentonSansMediumFont()); 

TelephonyManager manager = 
     (TelephonyManager)mActivity.getSystemService(Context.TELEPHONY_SERVICE); 

if(manager.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE){ 

    FrameLayout.LayoutParams params = 
       new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 
              LayoutParams.WRAP_CONTENT); 
    params.setMargins(800, 290, 10, 0); 
    layout.addView(mDescriptHelp, params); 
} 

添加mdescrition我的錯誤是

03-16 06:27:07.452: E/AndroidRuntime(7233): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 

我不理解的錯誤。任何想法?我希望有人能幫助我。

+0

你不應該這樣做。 從layout.xml中刪除id_descript_help TextView,並通過編程方式創建該視圖:mDescriptHelp = new TextView(mContext);然後嘗試將其添加到佈局。通過在layout.xml中放置視圖你聲明它的父項並且你不能移動它 – krossovochkin

+0

如果condition(getPhoneType()== PHONE_TYPE_NONE)爲true,那麼你可能想要顯示/隱藏這個TextView,那麼也許你應該嘗試使用mDescriptHelp.setVisibility(View .GONE)隱藏視圖和View.VISIBLE以顯示它 – krossovochkin

+0

我需要這樣做,因爲我必須區分它的平板電腦,如果它是智能手機,我不添加參數 – Cabezas

回答

1

要改變這一行

layout.addView(mDescriptHelp, params); 

mDescriptHelp.setLayoutParams(params); 

我認爲它的方式。

0

mDescriptHelp =(TextView)view.findViewById(R.id.id_descript_help);

這是你的問題。你已經有mDescription一個視圖樹中,否則你將不會被findViewById找到它()

相關問題