2013-02-26 2 views
0

Я пытаюсь создать 2 вкладки и 2 разных действия для 2 вкладок. Но ошибка при запуске. Вот мой код:Android Fragment Tabs throwing error

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); 
    } 
} 

Вот моя деятельность, которая появится на одной вкладке.

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); 
'''''''''''''''''''''''''''   
     } 
    } 

CatLog:

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) 
+0

Вы пробовали 'getFragmentManager()' вместо 'getSupportFragmentManager()'? – Shoshi

ответ

1

Вы даете метод addTab деятельность вместо фрагмента здесь:

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

Вот почему система пытается бросить свою деятельность к фрагменту и бросая ClassCastException.

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); 
    } 
+0

На самом деле я создаю приложение POS, где первой вкладкой будет выбран клиент. Во-вторых выберите пункт, 3-й, чтобы установить платеж. На четвертой вкладке появится опция предварительного просмотра и сохранения. Нажав кнопку «Сохранить», он сохранит базу данных. Так что я должен создать только одну FragementActivity, которая будет содержать все вкладки? Нужно ли сохранять данные каждой вкладки в сеансе до получения окончательной кнопки сохранения? Только расширяющийся фрагмент решает их? – ray