Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
原因:java.lang.IllegalStateException:指定的子级已具有父级。必须首先对子级的父级调用removeView()_Java_Android_View_Parent - Fatal编程技术网

原因:java.lang.IllegalStateException:指定的子级已具有父级。必须首先对子级的父级调用removeView()

原因:java.lang.IllegalStateException:指定的子级已具有父级。必须首先对子级的父级调用removeView(),java,android,view,parent,Java,Android,View,Parent,伙计们,我遇到了一个错误,我不知道如何解决它,请帮助我 这是我的密码: package com.appschool.www.projectphase1516; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.Menu; import android.

伙计们,我遇到了一个错误,我不知道如何解决它,请帮助我

这是我的密码:

package com.appschool.www.projectphase1516;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.TextView;

import com.appschool.www.projectphase1516.R;

import org.w3c.dom.Text;

public class AccountlistActivity extends Activity implements View.OnClickListener {
    LinearLayout horiz;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_accountlist);
        horiz = (LinearLayout) findViewById(R.id.linearlayouthere);
        Accountlistcreator();
        setContentView(horiz);
    }

    public void Accountlistcreator(){
        SharedPreferences sp = getSharedPreferences("details",1);
        int numofaccounts = sp.getInt("numofaccouns",0);
        horiz.removeAllViews();
        for(int i=0;i<=numofaccounts;i++) {
            TextView titleaccount = new TextView(this);
            titleaccount.setText(sp.getString("accountTitle" + i, ""));
            titleaccount.setTextSize(20);
            horiz.addView(titleaccount);
            Button seeaccount = new Button(this);
            seeaccount.setText("See Details");
            seeaccount.setId(i);
            seeaccount.setLayoutParams(new FrameLayout.LayoutParams(200,100));
            seeaccount.setOnClickListener(this);
            horiz.addView(seeaccount); 
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.accountlist, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onClick(View view) {
        SharedPreferences sp = getSharedPreferences("details",1);
        int num = sp.getInt("numofaccouns",0);
        for(int x=0;x<=num;x++){
            if(view.getId()==x){
                Intent myaccount = new Intent(AccountlistActivity.this,MyaccountActivity.class);
                myaccount.putExtra("numbtn",x);
                startActivity(myaccount);
            }
        }

    }
}
请帮帮我,伙计们

代码应该创建特定数量的按钮和文本视图

每次我去参加那个活动时,我都试图删除并重新创建它们,但我不确定为什么会不断出现错误:[

编辑:

谢谢,它现在运行,但还有一个问题

它不会创建超过1个文本视图和一个按钮,我不知道为什么

我对java开发相当陌生,所以我不知道上面的评论之类的复杂特性我只是在做作业:p

删除

setContentView(horiz);

horiz已经是活动内容视图的一部分。

您的方法是错误的,您希望通过创建多个文本视图来显示信息,从而用大量信息填充布局,您需要的是一个列表视图和一个自定义列表适配器,这样您就可以从共享首选项信息中获取您将保存在列表中的信息,然后将其传递给适配器,这样适配器就可以构建您想要的所有视图,并且比您的方法做得更好、更简单。

第一个答案:horiz已经有了父级,它已经是您设置的contentview的一部分。删除setContentViewhoriz

回答你的第二个问题:

SharedPreferences sp = getSharedPreferences("details",1);
int numofaccounts = sp.getInt("numofaccouns",0);

这意味着您可以使用条目NoMoFoCAMS获得SysDype细节。但是,因为您从来没有保存它。您只得到一个不存在的条目,如果没有该条目,则默认为0。FoLoLe初始化为int i=0;由JavaLang.ILLealStaleExeExt引起:指定的子已经有PAR。您必须首先在子级的父级上调用removeView。在android.view.ViewGroup.addViewInnerViewGroup.java:3562I,我建议使用以下方法创建UI,而不是从代码中将其组合在一起:

SharedPreferences sp = getSharedPreferences("details",1);
int numofaccounts = sp.getInt("numofaccouns",0);
final String SHARED_PREFS = "details";
final String NUMBER_OF_ACCOUNTS = "numberOfAccounts";
final int NUMBER_OF_ACCOUNTS_DEFAULT = 10;

int numberOfAccounts = 75;

//to save into sharedpreferences:
getSharedPreferences(SHARED_PREFS, MODE_PRIVATE).edit().put(NUMBER_OF_ACCOUNTS, numberOfAccounts).commit();

//to retrieve that value:
numberOfAccounts = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE).getInt(NUMBER_OF_ACCOUNTS, NUMBER_OF_ACCOUNTS_DEFAULT);