Проблемы с OnClickListener для вкладки в Android - PullRequest
1 голос
/ 22 июня 2011

Я новичок в программировании Android и у меня проблемы с OnClickListener для вкладок в моем приложении.Я нашел в стеке решение, как это должно быть сделано, но по какой-то причине оно не работает.

Я пытаюсь использовать второй ответ

Почему-тоЯ получаю 2 ошибки.

Первый указан в имени моей деятельности: Тип DragonLords должен реализовывать унаследованный абстрактный метод View.OnClickListener.onClick (View).

Второйдля метода OnClick: Метод onClick (View) типа new View.OnClickListener () {} должен переопределить метод суперкласса.

Вот часть моего кода:

public class DragonLords extends TabActivity implements OnClickListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, Home.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("home").setIndicator("home",
                      res.getDrawable(R.drawable.hometab))
                  .setContent(intent);
    tabHost.addTab(spec);
    getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (getTabHost().getCurrentTab()==0) {
                getTabHost().setCurrentTab(0);
            }else
            {
                getTabHost().setCurrentTab(0);
            }
        }

    });

После этого я создаю больше вкладок.Когда он работает, он должен быть в состоянии перезагрузить вкладки, когда они активны.

Кто-нибудь знает, что я делаю неправильно?

Я добавилнеобходимый импорт.

Гатц

Ответы [ 2 ]

1 голос
/ 22 июня 2011
  1. Вы должны реализовать метод onClick не в анонимном внутреннем классе, как вы это сделали в своем коде.
  2. Попробуйте использовать new TabWidget.OnClickListener вместо обычного OnClickListener

Что-то похожее на следующее:

public class TestActivity extends TabActivity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    getTabWidget().getChildAt(0).setOnClickListener(new TabWidget.OnClickListener() {

        public void onClick(View v) {
            if (getTabHost().getCurrentTab()==0) {
                getTabHost().setCurrentTab(0);
            }else
            {
                getTabHost().setCurrentTab(0);
            }
        }

    });
}

public void onClick(View theView) {
    // Do something with view here

}
}
0 голосов
/ 22 июня 2011

вы делаете это довольно сложным способом ... я сделал это так ...

public void onCreate (Bundle saveInstanceState) {super.onCreate (saveInstanceState);requestWindowFeature (Window.FEATURE_NO_TITLE);setContentView (R.layout.tablayout);

    res = getResources();
    tabHost=(TabHost)this.findViewById(android.R.id.tabhost);

    tabHost.getTabWidget().setDividerDrawable(R.drawable.vertical_seperator);

    setupTab(new TextView(this), "Login",new Intent().setClass(this,loginForm.class));
    setupTab(new TextView(this), "Can't Login",new Intent().setClass(this,ForgotPwd.class));
    setupTab(new TextView(this), "Register",new Intent().setClass(this,RegisterUser.class));
}

private void setupTab(final View view, final String tag,final Intent myIntent) 
{

        View tabview = createTabView(tabHost.getContext(), tag);


      TabSpec setContent = tabHost.newTabSpec(tag).setIndicator(tabview).setContent(
       new TabContentFactory() 
        {
            public View createTabContent(String tag) 
            {return view;}
        }).setContent(myIntent);

      tabHost.addTab(setContent);


}

private static View createTabView(final Context context, final String text)
{
    View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
    TextView tv = (TextView) view.findViewById(R.id.tabsText);
    tv.setText(text);
    return view;
}

надеюсь, это поможет .... tabs_bg - это просто XML с

<TextView android:id="@+id/tabsText" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:text="Title"
    android:textSize="15dip" 
    android:textColor="@drawable/tab_text_selector" />

...