Android 再次运行代码时出现异常 public类MainActivity扩展了FragmentActivity{ ImageView iview1; 布局参数; 碎片管理器fmgr; 碎片交易; 第一片段ff; 线性布局; ArrayList FArray; 整数计数器; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 计数器=0; FArray=新的ArrayList(); iview1=(ImageView)findViewById(R.id.iview); setOnClickListener(新的OnClickListener(){ @凌驾 公共void onClick(视图arg0){ //TODO自动生成的方法存根 showFF(); } }); 布局=(线性布局)findViewById(R.id.frag); fmgr=getSupportFragmentManager(); ftr=fmgr.beginTransaction(); params=(LayoutParams)layout.getLayoutParams(); //showF(); } 公开无效showFF(){ add(newfirstfragment()); ftr.add(R.id.frag,FArray.get(计数器)); if(true){//showing==false){ 参数重量=1; iview1.设置布局参数(参数); 布局。setLayoutParams(参数); 提交(); } 计数器++; } }

Android 再次运行代码时出现异常 public类MainActivity扩展了FragmentActivity{ ImageView iview1; 布局参数; 碎片管理器fmgr; 碎片交易; 第一片段ff; 线性布局; ArrayList FArray; 整数计数器; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 计数器=0; FArray=新的ArrayList(); iview1=(ImageView)findViewById(R.id.iview); setOnClickListener(新的OnClickListener(){ @凌驾 公共void onClick(视图arg0){ //TODO自动生成的方法存根 showFF(); } }); 布局=(线性布局)findViewById(R.id.frag); fmgr=getSupportFragmentManager(); ftr=fmgr.beginTransaction(); params=(LayoutParams)layout.getLayoutParams(); //showF(); } 公开无效showFF(){ add(newfirstfragment()); ftr.add(R.id.frag,FArray.get(计数器)); if(true){//showing==false){ 参数重量=1; iview1.设置布局参数(参数); 布局。setLayoutParams(参数); 提交(); } 计数器++; } },android,exception,android-fragments,Android,Exception,Android Fragments,第一次正确执行此代码时,但当我再次单击iview1时,我得到一个异常->强制关闭。 为什么?代码中的一个问题是,每次要提交您的片段更改时,都需要调用beginTransaction 因此,尝试在函数中添加beginTransaction,如下所示: public class MainActivity extends FragmentActivity { ImageView iview1; LayoutParams params; FragmentManager fmgr

第一次正确执行此代码时,但当我再次单击iview1时,我得到一个
异常
->
强制关闭

为什么?

代码中的一个问题是,每次要
提交
您的
片段
更改时,都需要调用
beginTransaction

因此,尝试在函数中添加
beginTransaction
,如下所示:

public class MainActivity extends FragmentActivity {

    ImageView iview1;
    LayoutParams params;
    FragmentManager fmgr;
    FragmentTransaction ftr;
    FirstFragment ff;
    LinearLayout layout;
    ArrayList<Fragment> FArray;
    int counter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        counter=0;
        FArray=new ArrayList<Fragment>();
        iview1=(ImageView)findViewById(R.id.iview);
        iview1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                showFF();

            }
        });
        layout=(LinearLayout) findViewById(R.id.frag);
        fmgr = getSupportFragmentManager();
        ftr=fmgr.beginTransaction();

        params=(LayoutParams) layout.getLayoutParams();

        //showF();
    }

    public void showFF(){
        FArray.add(new FirstFragment());
        ftr.add(R.id.frag, FArray.get(counter));
        if (true){//showing==false){
            params.weight=1;
            iview1.setLayoutParams(params);
            layout.setLayoutParams(params);
            ftr.commit();
        }
        counter++;

    }
}

如果您仍然有异常,请发布您的
Logcat
并尝试将其删除。

请在此处添加日志消息
public void showFF(){
    ftr=fmgr.beginTransaction();
    FArray.add(new FirstFragment());
    ftr.add(R.id.frag, FArray.get(counter));
    if (true){//showing==false){
        params.weight=1;
        iview1.setLayoutParams(params);
        layout.setLayoutParams(params);
        ftr.commit();
    }
    counter++;
}