我查看了很多类似的问题,并试图实施给出的解决方案。似乎没有删除' NullPointerException'这打破了我试图建立的应用程序。我总是使用这种方法按钮没有任何问题,我不知道如何解决这个问题。
下面是我的简单java类,其中' setOnClickListener'方法触发警告。
values = [400, 500, 600]
i = 700
candidates = []
for value in values:
candidates.append(abs(i-value))
closest_index = candidates.index(min(candidates))
print(values[closest_index])
我检查了xml属性的ID,一切似乎都很准确。欢迎任何帮助。
public class pennState extends AppCompatActivity {
Button buttonNext;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.penn_state_1);
buttonNext = (Button) findViewById(R.id.buttonNext);
buttonNext.setOnClickListener(myHandler1);
}
View.OnClickListener myHandler1 = new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(pennState.this, pennState2.class);
startActivity(i);
}
};
}
提前致谢! :)
答案 0 :(得分:3)
你在声明它之前调用该变量。并将myHandler1放入onCreate()。
您还可以将此属性添加到xml标记
android:onClick="myMethod"
然后声明这个方法
public void myMethod(View view){}
并在大括号中单击按钮时放置您想要执行的操作。
答案 1 :(得分:0)
将上面的变量声明与按钮一起放在onCreate
中进行初始化:
public class pennState extends AppCompatActivity {
Button buttonNext;
View.OnClickListener myHandler1;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.penn_state_1);
myHandler1 = new View.OnClickListener() {
public void onClick(View v) {
Intent i = new Intent(pennState.this, pennState2.class);
startActivity(i);
}
};
buttonNext = (Button) findViewById(R.id.buttonNext);
buttonNext.setOnClickListener(myHandler1);
}
答案 2 :(得分:0)
您只需将new OnClickListener
传递给按钮的setOnClickListener
,而不是将其声明为局部变量。你可以这样做:
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.penn_state_1);
buttonNext = (Button) findViewById(R.id.buttonNext);
buttonNext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(pennState.this, pennState2.class);
startActivity(i);
}
});
}