2016-11-13 60 views
0

我有一个应用程序,我动态地添加列表中的朋友数量的按钮。我可以添加1个朋友并查看好友列表。但是,当我添加第二个朋友并尝试查看FriendList时出现此错误 -指定的孩子已经有父母。你必须先调用孩子的父母的removeView() - 当动态添加按钮时得到这个错误

指定的子项已具有父项。你必须调用removeView() 孩子的父母第一

这里是我的代码 -

public class FriendsList extends AppCompatActivity implements View.OnClickListener {  

    @SuppressWarnings("ResourceType") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_friends_list); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

     createButtons();  
    } 

    private void createButtons() { 
     int size = FriendSearch.allFriends.size(); 
     for (int i = 0; i <= size - 1; i++) { 
      LinearLayout layout = (LinearLayout) findViewById(R.id.content_friends_list); 
      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
        Toolbar.LayoutParams.WRAP_CONTENT, Toolbar.LayoutParams.WRAP_CONTENT); 

      layout.setOrientation(LinearLayout.VERTICAL); 

      Button btn = new Button(this); 

      for (int j = 0; j <= size - 1; j++) { 
       String name = FriendSearch.allFriends.get(j).getUserName(); 
       btn.setText(name); 

       btn.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         //goes to this friend's profile page 
         FriendSearch.setIsFriend(true); 
         startActivity(new Intent(FriendsList.this, Profile.class)); 
        } 
       }); 
       layout.addView(btn); 
      }  
     } 
    } 

    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_friends_list, menu); 
     return true; 
    } 

    public boolean onOptionsItemSelected(MenuItem item) 
    { 
     switch(item.getItemId()){ 
      case R.id.addFriendOption: 
       startActivity(new Intent(this, FriendSearch.class)); 
       break; 

      case R.id.myProfileOption: 
       FriendSearch.setIsFriend(false); 
       startActivity(new Intent(this, Profile.class)); 
       break; 

      case android.R.id.home: 
       NavUtils.navigateUpTo(this, getIntent()); 
       return true; 
     } 

     return true; 
    } 

    @Override 
    public void onClick(View v) {  
    } 
} 

我觉得要我清楚当页面再次调用,所以所有的视图可以添加按钮。但在我尝试过的每一种方式中,我都会遇到错误或空白的活动。

回答

0

上移:

Button btn = new Button(this); 

里面for (int j = 0; j <= size - 1; j++)循环,或移动:

layout.addView(btn); 

for (int j = 0; j <= size - 1; j++)循环。

就像现在这样,您正在试图添加几次相同的Button,每次循环都会执行一次。

+0

谢谢,这解决了崩溃问题。我做了第一个建议,它给了我每个user1 user2 user1 user2的2个按钮。他们都去了user2个人资料。第二个建议给了我适当数量的按钮,但他们是为同一个用户。 – zmace

+0

但我认为这与我的代码的其他部分有关。 – zmace

相关问题