首页 > 解决方案 > Android Studio:OnClickListener 灰显,无法实现

问题描述

第一次,很久了。我已经尝试了所有让 OnClickListener 适配器工作的方法,每次我尝试实现它时,它都会使用下面的方法变灰。它已经发生在多个不同的项目中。

'
   btn_add.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
        }
        });

'

显然,当我运行代码时,它会给出一个空指针异常。

使用我在一个侦听器下面包含的代码,AddListener 有效,而 ViewAllListener 无效。我再次得到 ViewAllListener 的空指针异常。我跟随教程并遇到了同样的问题。我的解决方法是使用与我在下面提交的代码类似的代码。它为那个项目修复了它,但现在我在一个完全不同的项目中拥有它。除了这一次它只与一个听众而不是另一个听众。我难住了。对于另一个项目,我尝试了在扩展 AppCompatActivity 之后附加的“实现 View.OnClickListener”。我仍然遇到了同样的问题,OnClickListner 变灰并在运行时抛出 nullpointerexception。任何帮助将不胜感激。

`

    import androidx.appcompat.app.AppCompatActivity; 
    import android.view.View.OnClickListener;
    
    public class MainActivity extends AppCompatActivity {
        Button btn_add_horse_ll, btn_viewAll_LL;
        private final OnClickListener AddListener = new OnClickListener() {
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Success " + success, Toast.LENGTH_SHORT).show();
            }
        };  
        private final OnClickListener ViewAllListener = new OnClickListener() {
            @Override
            public void onClick(View v) {
                DatabaseHelper dataBaseHelper = new DatabaseHelper(MainActivity.this);
                ShowHorsesOnListView(dataBaseHelper);
            }
        };
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);       
            btn_add_horse_ll = findViewById(R.id.btn_add_horse_ll);
            btn_viewAll_LL = findViewById(R.id.btn_viewAll_LL);
            btn_add_horse_ll.setOnClickListener(AddListener);
            btn_viewAll_LL.setOnClickListener(ViewAllListener);
      }
        public OnClickListener getAddListener() {
            return AddListener;
        }
        public OnClickListener getViewAllListener(){
            return ViewAllListener;
        }

`

这是xml:

`  
 

    <LinearLayout>
        <Button android:id="@+id/btn_add_horse_ll"/>
       </LinearLayout>
      <LinearLayout>   
      <Button android:id="@+id/btn_viewAll_LL"/>  
      </LinearLayout>

`

我不知道还能说什么或要问什么其他问题,但它一直告诉我我有太多代码。我尝试从一个新程序重新开始,但最终还是遇到了同样的问题。

标签: javaandroidonclicklistener

解决方案


btn_add.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v){
    }
    });

btn_add在你的代码中定义了什么?这就是导致错误的原因


推荐阅读