2015-06-30 33 views
0

我有一个PreferenceFragment显示偏好的动态列表,实现像这样;Android:addView(查看)不支持AdapterView

public class ConfigFragment extends PreferenceFragment { 

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

     addPreferencesFromResource(R.xml.settings); 

     for(int i = 0; i<items.size();i++) { 

      SettingsScreen s = new SettingsScreen(getActivity()); 

      PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(getActivity()); 
      screen.setTitle(itemName); 
      screen.addPreference(s); 
      indicatorCategory.addPreference(screen); 
     } 
} 

SettingsScreen从偏好派生并显示自定义布局;

public class SettingsScreen extends Preference { 

@Override 
protected View onCreateView(ViewGroup group) { 

    LayoutInflater li = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View v = li.inflate(R.layout.indicator_config, group, false); 

    return v; 
} 

到目前为止工作正常。我现在面临的问题是当我尝试动态添加视图到SettingsScreen时。 以下将导致在标题中声明崩溃(UnsupportedOperationException:addView(View)在AdapterView中不受支持);

Button b = new Button(getContext); 
group.addView(b); 

那么我该如何动态地将视图添加到SettingsScreen?

回答

1

不多回事了Android在这里计算器我猜...

总之,要回答我的问题;技巧是不直接向视图添加子视图,而是向视图的布局添加子视图;

View v = li.inflate(R.layout.indicator_config, group, false); 
LinearLayout r = (LinearLayout) v.findViewById(R.id.configLayout); 
Button b = new Button(getContext); 
r.addView(b); 
相关问题