所以标题说明了一切.我的内部出现了编译错误onClick.
这是代码.
public class fieldsActivity extends Activity {
Button addSiteButton;
Button cancelButton;
Button signInButton;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// to create a custom title bar for activity window
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.fields);
// use custom layout title bar
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.topbar);
Pager adapter = new Pager();
ViewPager mPager = (ViewPager) findViewById(R.id.fieldspager);
mPager.setAdapter(adapter);
mPager.setCurrentItem(1);
addSiteButton = (Button) findViewById(R.id.addSiteButton);
addSiteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPager.setCurrentItem(2, true); …Run Code Online (Sandbox Code Playgroud) 我将如何为实现接口的内部类编写构造函数?我知道我可以创建一个全新的课程,但我认为必须有一种方法可以做到这一点:
JButton b = new JButton(new AbstractAction() {
public AbstractAction() {
super("This is a button");
}
public void actionPerformed(ActionEvent e) {
System.out.println("button clicked");
}
});
Run Code Online (Sandbox Code Playgroud)
当我输入它时,它不会将AbstractAction方法识别为构造函数(编译器要求返回类型).有没有人有想法?
我正在尝试运行此代码:
class A {
int x = 123;
public void f(int x) {
new Runnable() {
public void run() {
System.out.println(x);
}
}.run();
}
static {
A a = new A();
a.f(33);
}
}
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误:
$ javac A.java && java A
A.java:6: local variable x is accessed from within inner class; needs to be declared final
System.out.println(x);
^
1 error
Run Code Online (Sandbox Code Playgroud)
该x参数不是final,所以它不应该是从匿名类访问,但代码编译失败.看起来该println行试图使用x参数而不是x字段.为什么?我怎么能告诉它我想要这个x领域?