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