GVKun编程网logo

android-setOnClickListeners用于动态创建的复选框(android 动态创建控件)

12

本篇文章给大家谈谈android-setOnClickListeners用于动态创建的复选框,以及android动态创建控件的知识点,同时本文还将给你拓展AndroidonClick方法与setOnC

本篇文章给大家谈谈android-setOnClickListeners用于动态创建的复选框,以及android 动态创建控件的知识点,同时本文还将给你拓展Android onClick方法与setOnClickListener方法对比、Android setOnclicklistener 空指针错误、Android setOnClickListener方法 – 它是如何工作的?、android setOnClickListener给出空指针异常?等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

android-setOnClickListeners用于动态创建的复选框(android 动态创建控件)

android-setOnClickListeners用于动态创建的复选框(android 动态创建控件)

尝试在我的应用程序中创建动态CheckBoxes时遇到问题.设计工作正常,我可以创建任意数量的复选框.复选框与TextView一起放入TableRow中,以便文本位于复选框的左侧.但是我的问题是,在我的活动中,无论是否选中,我都可以获取复选框的“状态”.
我使用充气机创建我的复选框.复选框的xml:

<TableRow xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/TableRow" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView android:paddingLeft="20dip" android:id="@+id/tv_effect" android:gravity="left" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:textColor="#000" android:textSize="18dip" android:layout_width="wrap_content"></TextView>
<CheckBox android:id="@+id/cb_effect" android:layout_height="wrap_content" android:text="" android:layout_gravity="right" android:layout_width="wrap_content"></CheckBox>

我调用的函数来创建一个包含textview和复选框的新tablerow:

    public void layoutMakeSpeakerEffect(String effectName,int effectNumber)
{
    LayoutInflater linflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View myViewSp = linflater.inflate(R.layout.speaker_settings, null);

    final TextView tv_effect = (TextView) myViewSp.findViewById(R.id.tv_effect);
    tv_effect.setId(effectNumber);
    tv_effect.setText(effectName);

    final CheckBox cb_effect = (CheckBox) myViewSp.findViewById(R.id.cb_effect);
    cb_effect.setId(effectNumber);
    cb_effect.setText("");

    cb_effect.setonClickListener(new OnClickListener() {
          @Override
          public void onClick(View v) { 
              if(cb_effect.isChecked())
              {
                  Toast toast = Toast.makeText(getApplicationContext(), ""+tv_effect.getText()+": ON", Toast.LENGTH_SHORT);
                  toast.show();
              }
              else
              {
                  Toast toast = Toast.makeText(getApplicationContext(), ""+tv_effect.getText()+": OFF", Toast.LENGTH_SHORT);
                  toast.show(); 
              }
          }
    });

    tl_speakerSettings.addView(myViewSp);   
}

如前所述,设计工作正常.
但是我如何能够在此功能之外使复选框中的“状态”消失呢?
我还需要一个可以清除复选框状态的功能,以及另一个可以启用和禁用复选框的功能?

我似乎无法自己解决这个问题.

我唯一的想法是做一些检查“ cb_effects” ID的事,然后检查所需复选框的状态.

解决方法:

请改用setOnCheckedChangeListener.它将触发onCheckedChanged(CompoundButton buttonView,boolean isChecked)方法,您现在可以在其中读取isChecked变量的复选框状态.

Android onClick方法与setOnClickListener方法对比

Android onClick方法与setOnClickListener方法对比

Android onClick 与 setonClickListener区别

为Android Widgets添加点击事件处理函数又两种方法,一个是在Xml文件中添加onClick属性,然后在代码中添加对应的函数。另一个是直接在代码中添加setonClickListener函数。两者什么区别呢?以Button控件为例讲解一下。

方法一

在Xml中添加onClick属性

<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
  <Button
    android:id="@+id/mybutton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="Press Me"
    android:onClick="buttonClick"/>
</RelativeLayout>

在代码中添加对应的函数buttonClick,注意要添加到当前Activity对应的java类中。

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  public void buttonClick(View view) {
    Toast.makeText(this,"Button was clicked",Toast.LENGTH_SHORT).show();
  }
  
  // ....
}

方法二

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button)findViewById(R.id.mybutton);
    button.setonClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        Toast.makeText(MainActivity.this,Toast.LENGTH_SHORT).show();
      }
    });
  }
}

两者的共同点

两者底层没有区别。

两者的区别

使用第一种方法的注意事项:

1. 事件处理函数必须是public的。

2. 事件处理函数必须在Activity中定义。

3. 事件处理函数必须有一个View类型的参数。

4. 只能用在API Level 4及以后的版本。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Android setOnclicklistener 空指针错误

Android setOnclicklistener 空指针错误

@神经病胡子 你好,想跟你请教个问题:

java代码没有问题的

saveButton=(Button)this.findViewById(R.id.main_save);

saveButton.setOnClickListener(this);

只不过之前改动了一下xml文件 程序运行就老是出现空指针错误

07-12 13:11:29.454: E/AndroidRuntime(704): FATAL EXCEPTION: main
07-12 13:11:29.454: E/AndroidRuntime(704): java.lang.NullPointerException
07-12 13:11:29.454: E/AndroidRuntime(704): at com.activity.ChatScrawlActivity.FindDrawID(ChatScrawlActivity.java:154)
07-12 13:11:29.454: E/AndroidRuntime(704): at com.activity.ChatScrawlActivity.toDrawView(ChatScrawlActivity.java:217)
07-12 13:11:29.454: E/AndroidRuntime(704): at com.activity.ChatScrawlActivity$1.handleMessage(ChatScrawlActivity.java:111)
07-12 13:11:29.454: E/AndroidRuntime(704): at android.os.Handler.dispatchMessage(Handler.java:99)


在网上看到很多人也遇到这个问题 说是安桌模拟器闹脾气了  xml编译出错了什么的

解决方法也是各种奇葩 

各路神仙有谁遇到过这个问题吗

拯救小弟于水深火热中

感激不尽

Android setOnClickListener方法 – 它是如何工作的?

Android setOnClickListener方法 – 它是如何工作的?

我无法理解这段代码.我得到findViewById将获得按钮小部件,然后它将投射它.然后,它将使用该按钮来调用setonClickListener方法.但是,我不知道该参数是什么传递给setonClickListener,我以前从未见过这样的代码.它是如何创建一个新对象但是能够在另一个方法的参数中创建自己的方法?如果有人能够解释那就好了.另外,setonClickListener方法接受什么类型的对象?

btn = (Button)findViewById(R.id.firstButton);
btn.setonClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View v)
    {
        tv.setText(months[rand.nextInt(12)]);
        tv.setTextColor(Color.rgb(rand.nextInt(255)+1, rand.nextInt(255)+1, rand.nextInt(255)+1));
    }
});

解决方法:

它的工作原理如下. View.OnClickListenere已定义 –

public interface OnClickListener {
    void onClick(View v);
}

据我们所知,您无法实例化OnClickListener对象,因为它没有实现方法.因此,有两种方法可以实现 – 您可以实现此接口,它将覆盖onClick方法,如下所示:

public class MyListener implements View.OnClickListener {
    @Override
    public void onClick (View v) {
         // your code here;
    }
}

但是每次想要设置点击监听器时都要这么做是很乏味的.因此,为了避免这种情况,您可以在现场提供方法的实现,就像您给出的示例一样.

setonClickListener将View.OnClickListener作为其参数.

android setOnClickListener给出空指针异常?

android setOnClickListener给出空指针异常?

我已经为另一个视图的自定义对话框的onClick方法编写了代码.它给了我nullpointer异常.我也尝试过使用Layout inflater.它给我ok.setonclickListener错误.我的代码有什么问题?

ImageButton search =(ImageButton) findViewById(R.id.search);
            search.setonClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                    Dialog searchDialog = new Dialog(Page.this);

                    /*LayoutInflater inflater = (LayoutInflater) getApplicationContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);


                     View layout = inflater.inflate(R.layout.search,null);
                     searchDialog.addContentView(layout,new LayoutParams(
                                LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
                     searchDialog.setContentView(layout);*/

                    searchDialog.setContentView(R.layout.search);
                    searchDialog.setTitle("Search Dialog");
                    searchDialog.setCancelable(true);

                    Button ok = (Button)findViewById(R.id.OkButton);
                    ok.setonClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            String searchString = null;
                            EditText searchText = (EditText)findViewById(R.id.searchText);
                            if(searchText.getText()!=null){
                                searchString = searchText.getText().toString();
                            }
                            Log.i("TAG","Search word :"+searchString);

                        }
                    });

                    searchDialog.show();



                }


            });

解决方法

您正在查找创建对话框而不是对话框本身的活动中的按钮. findViewById行应该是:

Button ok = (Button)searchDialog.findViewById(R.id.OkButton);

我们今天的关于android-setOnClickListeners用于动态创建的复选框android 动态创建控件的分享已经告一段落,感谢您的关注,如果您想了解更多关于Android onClick方法与setOnClickListener方法对比、Android setOnclicklistener 空指针错误、Android setOnClickListener方法 – 它是如何工作的?、android setOnClickListener给出空指针异常?的相关信息,请在本站查询。

本文标签: