1

我正在处理的 android 应用程序中有一个非法参数异常。

我已经多次看到这个问题被问到,我自己在不同的情况下也遇到过几次这个问题。

本质上,我想要做的是让用户在一个片段(称为EditFragment)中按下一个按钮,然后将导致这个片段(OneVarCreatorFrag)。

我曾尝试使用人们在与此类似的问题中提出的一些技巧,但似乎没有人在我所拥有的确切上下文中遇到过这个问题。这是我的日志:

06-01 10:42:02.582: E/AndroidRuntime(625): java.lang.IllegalArgumentException: No view found for id 0x7f030002 for fragment OneVarCreatorFrag{4121c0f8 #1 id=0x7f030002}

id 0x7f030002 是一个布局。这是它的代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

    <TextView
        android:id="@+id/one_var_textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="22dp"
        android:text="One Variable list"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/one_var_editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/one_var_button2"
        android:layout_centerHorizontal="true"
        android:hint="Enter a number"
        android:ems="10" />

    <EditText
        android:id="@+id/one_var_editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/one_var_textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="30dp"
        android:hint="Name of List"
        android:ems="10" />

    <Button
        android:id="@+id/one_var_button3"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/one_var_editText2"
        android:layout_below="@+id/one_var_editText2"
        android:text="Create" />

    <ListView
        android:id="@+id/one_var_listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/one_var_button2" >

    </ListView>

    <Button
        android:id="@+id/one_var_button1"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/one_var_listView1"
        android:layout_toLeftOf="@+id/one_var_button2"
        android:text="Add" />

    <Button
        android:id="@+id/one_var_button2"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/one_var_editText1"
        android:layout_centerVertical="true"
        android:text="Clear" />

</RelativeLayout>

“fragment OneVarCreatorFrag”是一个继承Fragment(不是支持版本)的类。这是代码:

import java.util.ArrayList;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;

public class OneVarCreatorFrag extends Fragment{

    private View view;
    private Button add;
    private Button create;
    private Button clear;
    private EditText name;
    private EditText getNum;
    private ListView listView;
    private String temp; 
    private int index;
    private boolean newListCreated;
    private ArrayList<Double> numNums;
    private ArrayAdapter adapter;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.one_var_creator, container, false);

        add = (Button) view.findViewById(R.id.one_var_button1);
        create = (Button) view.findViewById(R.id.one_var_button3);
        clear = (Button) view.findViewById(R.id.one_var_button2);
        name = (EditText) view.findViewById(R.id.one_var_editText2);
        getNum = (EditText) view.findViewById(R.id.one_var_editText1);
        numNums = new ArrayList<Double>();

        adapter = new ArrayAdapter<Double>(view.getContext(),     R.id.one_var_listView1, numNums);

        create.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                temp = name.getText().toString();
                MainActivity.metaList.add(new StatList(temp));
                index = MainActivity.metaList.size()-1;
                newListCreated = true;
            }
        });
        add.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if(newListCreated)
                {
                    int tempNum = Integer.parseInt(getNum.getText().toString());
                    MainActivity.metaList.get(index).mainList.add(new Number(tempNum));
                    listView.toString();
                    popNumNums();
                    listView.setAdapter(adapter);
                }

            }
        });
        clear.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if(newListCreated)
                {
                    MainActivity.metaList.get(index).mainList.clear();
                }       
            }
        });

        return view;
    }
    public void popNumNums(){
        for(int k = 0; k < MainActivity.metaList.get(index).mainList.size(); k++)
        {
            numNums.add(MainActivity.metaList.get(index).mainList.get(k).quantity);
        }
    }
}

这是 EditFragment 代码:

包 com.statbot;

import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ListView;
import android.widget.RadioButton;

public class EditFragment extends Fragment{

    private Button create;
    private RadioButton twoVar;
    private RadioButton oneVar;
    private ListView numView;
    private View view;

    public EditFragment(){

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.edit_layout, container, false);
        create = (Button) view.findViewById(R.id.edit_frag_button1);
        oneVar = (RadioButton) view.findViewById(R.id.edit_frag_radioButton1);
        create.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(oneVar.isChecked())
                {
                    Fragment fragment = new OneVarCreatorFrag();
                    FragmentManager fm = getFragmentManager();
                    FragmentTransaction transaction = fm.beginTransaction();
                    transaction.replace(R.layout.one_var_creator, fragment);
                    transaction.commit();
                }
            }

        });

        return view;
    }
}
4

0 回答 0