我已经在布局中以编程方式创建了一个按钮,但现在我找不到捕捉onClick事件的方法。代码如下:
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Button;
public class MainActivity extends Activity implements View.OnClickListener {
int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout linLayout = new LinearLayout(this);
linLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams linLayoutParam = new
LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
setContentView(linLayout, linLayoutParam);
LinearLayout.LayoutParams lpView = new
LinearLayout.LayoutParams(wrapContent, wrapContent);
Button btn = new Button(this);
btn.setText("Button");
linLayout.addView(btn, lpView);
}//fin de onCreate
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn: //Here the problem begins with error 'btn'
break;
}
}
}
如何让它识别以编程方式创建的符号'btn‘对象?
谢谢。
发布于 2018-09-12 08:15:13
我不敢相信我找不到一个已经被写过的问题...
如果你使用read the docs,谷歌会在页面顶部告诉你该怎么做:button.setOnClickListener()
。在您的案例中:
Button btn = new Button(this);
btn.setOnClickListener(this);
发布于 2018-09-12 08:31:04
就像@TheWanderer说你还没有指定ID一样
btn.setId(your_set_id);
btn.setOnClickListener(this);
然后,稍后
switch(item.getItemId()) {
case R.id.your_set_id:
break;
}
发布于 2018-09-14 06:43:52
通过下面的代码,我实现了这个目标,但是我希望解决方案是对几个按钮使用开关大小写,能够通过它们的ID来识别它们。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
int wrapContent = LinearLayout.LayoutParams.WRAP_CONTENT;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout linLayout = new LinearLayout(this);
linLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams linLayoutParam = new
LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
setContentView(linLayout, linLayoutParam);
LinearLayout.LayoutParams lpView = new LinearLayout.LayoutParams(wrapContent, wrapContent);
Button btn = new Button(this);
btn.setText("Button");
linLayout.addView(btn, lpView);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),"click btn." ,Toast.LENGTH_SHORT).show();
}
}
);
}//end de onCreate
}
https://stackoverflow.com/questions/52285685
复制相似问题