0

2 つのタブと 2 つのタブに対して 2 つの異なるアクティビティを作成しようとしています。しかし、開始アクティビティ中にエラーがスローされます。これが私のコードです:

public class CashSales extends FragmentActivity {
    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.cash_sales_tab);
        mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

        mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
                CustomerAddActivity.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
                ItemAddActivity.class, null);
    }
}

1 つのタブに表示される私のアクティビティを次に示します。

   public class CustomerAddActivity extends FragmentActivity {
        private EditText mName; 
        private EditText mEmail1;
        private Integer mPkid;

        @Override
        protected void onCreate(Bundle bundle) {
            super.onCreate(bundle);
            setContentView(R.layout.activity_customer_add);

            mName = (EditText) findViewById(R.id.customer_add_name);
            mEmail1 = (EditText) findViewById(R.id.customer_add_email1);
            Button confirmButton = (Button) findViewById(R.id.customer_add_button);
'''''''''''''''''''''''''''         
        }
    }

キャットログ:

02-26 05:52:39.732: E/AndroidRuntime(25579): FATAL EXCEPTION: main
02-26 05:52:39.732: E/AndroidRuntime(25579): java.lang.ClassCastException: asia.wavelet.android.customer.CustomerAddActivity cannot be cast to android.support.v4.app.Fragment
02-26 05:52:39.732: E/AndroidRuntime(25579):    at android.support.v4.app.Fragment.instantiate(Fragment.java:394)
02-26 05:52:39.732: E/AndroidRuntime(25579):    at android.support.v4.app.FragmentTabHost.doTabChanged(FragmentTabHost.java:339)
02-26 05:52:39.732: E/AndroidRuntime(25579):    at android.support.v4.app.FragmentTabHost.onAttachedToWindow(FragmentTabHost.java:276)
4

2 に答える 2

1

addTabここでは、フラグメントではなくアクティビティをメソッドに与えています。

mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
                CustomerAddActivity.class, null);
 mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
                ItemAddActivity.class, null);

そのため、システムはアクティビティをフラグメントにキャストしてClassCastException.

于 2013-02-26T06:18:02.447 に答える
0

フラグメントアクティビティではなく、フラグメントを拡張する必要があります。

このような。

public class CustomerAddActivity extends Fragment
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        return inflater.inflate(R.layout.activity_customer_add, container, false);
    }
于 2013-02-26T06:18:09.193 に答える