OnClickListener在android中的选项卡问题

时间:2011-06-21 21:17:06

标签: android tabs onclick listener

我是Android程序设计的新手,我的应用程序中的选项卡的OnClickListener出现问题。我在堆栈上找到了应该如何完成的解决方案,但由于某种原因它无法正常工作。

I'm trying to use the 2nd answer

出于某种原因,我遇到了2个错误。

第一个是关于我的活动的名称:类型DragonLords必须实现继承的抽象方法View.OnClickListener.onClick(查看)。

第二个是onClick方法:新的View.OnClickListener(){}类型的onClick(View)方法必须覆盖超类方法。

以下是我的代码的一部分:

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

    });

之后我会创建更多标签。没有onclicklistener它正在工作,我需要能够在它们活动时重新加载标签。

任何人都知道我做错了什么?

我添加了必要的导入。

盖兹

2 个答案:

答案 0 :(得分:1)

  1. 您必须在匿名内部类中实现onClick方法,就像您在代码中所做的那样。
  2. 尝试使用new TabWidget.OnClickListener而不是普通的OnClickListener
  3. 类似于以下内容:

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

答案 1 :(得分:0)

你这样做很难......我这样做了......

public void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);         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" />