【问题标题】:Button onClick doesn't work按钮 onClick 不起作用
【发布时间】:2012-02-01 13:04:39
【问题描述】:

我制作了一个 viewPager,在每个页面上都有三个布局......我想处理第二页上的一个按钮,但不知何故我不能......(P.S.:没有按钮代码,我的 viewPager 工作)我只是简单地尝试单击时更改背景...

这是我的代码:

public class ViewPagerProjectActivity extends Activity implements OnClickListener{

Button btn;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ViewPagerAdapter adapter = new ViewPagerAdapter( this );
    ViewPager pager = (ViewPager)findViewById( R.id.viewpager );
    pager.setAdapter( adapter );
    pager.setCurrentItem(0);


}


public void OnClick(View v) {
    if(v.equals(btn)) {
    LinearLayout l = (LinearLayout) findViewById(R.id.deneme2);
            l.setBackgroundDrawable(getResources().getDrawable(R.drawable.background));
    }       
}    
}

这是错误:

E/AndroidRuntime(273): FATAL EXCEPTION: main
E/AndroidRuntime(273): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.yahya.ViewPagerProject/com.yahya.ViewPagerProject.ViewPagerProjectActivity}: java.lang.ClassCastException: com.yahya.ViewPagerProject.ViewPagerProjectActivity
E/AndroidRuntime(273):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
E/AndroidRuntime(273):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
E/AndroidRuntime(273):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)

【问题讨论】:

  • ViewPager 的布局文件中有什么内容?
  • 在每个布局上都有其他东西......第二个只有一个按钮,我想点击它。
  • 行号是多少?也许你应该让它像 LinearLayout l = (LinearLayout)ViewPagerProjectActivity.this.findViewById(R.id.layout1);
  • 请发布您的布局文件。
  • meltemyldrim 给出的答案已经解决了问题,但还是谢谢。

标签: android button android-button android-viewpager


【解决方案1】:

试试这些行,我希望它有效...

View deneme2lout = (View) getView.inflate(R.layout.deneme2,null);
btn = (Button) deneme2lout.findViewById(R.id.button1);
btn.setOnClickListener(this);

【讨论】:

    【解决方案2】:

    尝试使用:

    public class ViewPagerProjectActivity extends Activity {
    
    Button btn;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        ViewPagerAdapter adapter = new ViewPagerAdapter( this );
        ViewPager pager = (ViewPager)findViewById( R.id.viewpager );
        pager.setAdapter( adapter );
        pager.setCurrentItem(0);
    
        LinearLayout l = (LinearLayout) findViewById(R.id.layout1);
        btn = (Button) findViewById(R.id.button1);    
        btn.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View arg0) {               
    
                 l.setBackgroundDrawable(getResources().getDrawable(R.drawable.background));
            }
        });
    }
    

    【讨论】:

    • 现在编译器在“btn.setOnClickListener( ... );”这一行给我一个 NullPointerException 错误
    • 我仍然是 NullPointerException ...我不知道为什么? ://
    • 您是否尝试过我在回答中给出的整个代码?不要像在问题中那样在 onCreate() 之外使用 onClicl()。
    • 是的,我做到了......仍然给我。
    • 奇怪!这不应该。使用此代码,您不需要实现 onClickListener。如果您这样做,请删除它。但我认为,您已经得到了答案,所以现在不是问题! !
    【解决方案3】:
    > btn.setOnClickListener((OnClickListener) this);
    

    这不起作用,因为ViewPagerProjectActivity 没有所需的

    implements OnClickListener接口

    【讨论】:

    • 你是对的,我只是忘记了它......但现在它完成了,编译器在这一行“btn.setOnClickListener(this);”上给了我一个 NullPointerException 错误但为什么? ://
    【解决方案4】:

    试试

     public class ViewPagerProjectActivity extends Activity implements OnClickListener
    
     then btn.setOnClickListener(this); 
    

    【讨论】:

      【解决方案5】:

      即使我在向 XML 文件中添加自定义 UI 元素时也遇到过此类问题。

      我刚刚从 Xml 文件中删除了该特定项目并构建了项目并再次恢复了该文件。问题得到了解决。看起来很疯狂..但只试一次。

      【讨论】:

        【解决方案6】:

        我想这会对你有所帮助..

        在 android 中使用按钮...

        将 XML 文件中的按钮与 java 类文件中的按钮映射为...

        Button bt=(Button)findViewById(R.layout.button_id_in_your_xml);
        

        next.. 为按钮 bt 调用 onclickListener 如下..

        bt.setOnClickListener(new View.onClickListener(){
        
        public void onClick(View arg0) {
        
            //write what you want to do when you click the button
        }
        );
        

        【讨论】:

          【解决方案7】:

          当您尝试处理按钮的点击时,您有两个选择

          1. 在 xml 布局文件中,将 android:onClick 设置为类似于“myButtonClick”的内容。然后在您要使用此布局的相关 Activity .java 文件中有一个方法public void myButtonClick(View v)。然后把你的逻辑放在那里。
          2. 在你的 onCreate() 放

            btn = (Button) findViewById(R.id.button1);  
            btn.setOnClickListener(new OnClickListener() {
            
              @Override
              public void onClick(View arg0) {               
            
                 //Your logic here
              }
            });
            

          【讨论】:

            猜你喜欢
            • 2018-05-10
            • 2012-03-26
            • 2015-02-24
            • 2017-10-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-11-15
            相关资源
            最近更新 更多