【问题标题】:Silly errors (beginner)愚蠢的错误(初学者)
【发布时间】:2015-08-31 22:26:51
【问题描述】:

我有第一个活动(“主页”),有两个按钮:一个名为 About 并引导至活动 About,第二个名为 List 并引导至活动 List。

Manifest.xml 应该没问题,但是很遗憾,我遇到了很多我自己无法修复的小错误。

Home.class 如下

Public class Home extends AppCompatActivity {

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

    Button AboutButton = (Button)findViewById(R.id.About);

    AboutButton.setOnClickListener(new View.OnClickListener()){

        @Override
                public void onClick(View view); {
            Intent openAbout = new Intent(Home.this, About.class);
            startActivity(openAbout);
        }
    }

    Button ListButton = (Button)findViewById(R.id.List);

    ListButton.setOnClickListener(new View.onClickListener());{

        @Override
                public void onClick(View view); {
            Intent openList = new Intent(Home.this, List.class);
            startActivity(openList);
        }
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_home, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

而 About.class 是这样的

public class About extends AppCompatActivity {

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

    Button ReturnButton = (Button)findViewById(R.id.Return);

    ReturnButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent returnhome = new Intent(About.this, Home.class);
            startActivity(returnhome);

        }


        public void onClick(View view); {
            Intent returnhome = new Intent(About.this, Home.class);
            startActivity(returnhome);
        }
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_about, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

而List是这样的:

public class List extends AppCompatActivity {

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

    Button ReturnButton = (Button)findViewById(R.id.Return);

    ReturnButton.setOnClickListener(new View.OnClickListener()){

        @Override
        public void onClick(View view)   {
            Intent returnhome = new Intent(About.this, Home.class);
            startActivity(returnhome);
        }
    }
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_list, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}
}

我得到很多红灯泡,例如“)”或“;”预计或(更糟)onClickListener 无法解析

最后但同样重要的是:我在网上复制了这段代码,我想知道为什么在“查看”之后有一个“查看”;什么意思?

【问题讨论】:

  • I get lot of red light bulbs, saying, for instance that ")" or ";" is expected - 添加他们。 ...(跳过)...public void onClick(View view) 这里需要一个View 类型的对象,它被命名为view。
  • 您的 About 类中有一个重复的 onClick()。第二个不仅不能存在,而且还错过了@Override 属性。除此之外,签名后还有一个额外的分号:public void onClick(View view); {,这是另一个错误。
  • @FrankN.Stein 记录在案。代码审查不适用于损坏的代码。因此,这个问题对于 codereview 来说是非常离题的
  • @Vogel612 对于 HERE 来说,这也太离题了……因为这确实是一堆错误,而不仅仅是一个特定的问题。
  • 我从没说过不是:)

标签: android class


【解决方案1】:

我复制了你的代码,我发现到处都失败了……让我解释一下发生了什么……

家庭课

1.- 您必须删除“)”

2.- 你不必“;”当你打电话给onClick()

3.- 当您打开onClick() NOW 时,您必须关闭它,您错过了“);”

AboutButton.setOnClickListener(new View.OnClickListener()){ //<-- Just remove one

        @Override
        public void onClick(View view); { //<-- Remove this ";"
            Intent openAbout = new Intent(Home.this, About.class);
            startActivity(openAbout);
        }
    }//Here goes ");"

4.- ListButton 有同样的问题,所以只需修复它,因为您将修复第一个问题。

关于课程

1.-在这种情况下你有setOnClickListener() 好的,但是为什么你有两个onClick(View view)?不必只删除其中一个。

   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_about);

    Button ReturnButton = (Button) findViewById(R.id.Return);

    ReturnButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent returnhome = new Intent(About.this, Home.class);
            startActivity(returnhome);

        }
    });
}

列表类

1.-在您的 List 类中,您犯了与第一个相同的错误...您的 onClickListener() 错了。

2.-你再次在new View.OnClickListener() 上添加了一个不必要的“)”,只需将其删除即可,

3.-我看到的另一个失败是您正在尝试创建Intent,但您指的是您在About.this 上,而您不是。你在 List 类所以你没有把List.this 因为第一个参数是指:

一个Context作为它的第一个参数(这是因为Activity类是Context的子类)

More information about Intents

4.- 你需要再次关闭setOnClickListener()

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);

    Button ReturnButton = (Button)findViewById(R.id.Return);

    ReturnButton.setOnClickListener(new View.OnClickListener()){ //<-- remove one ")"

        @Override
        public void onClick(View view)   {
            Intent returnhome = new Intent(About.this, Home.class); //<-- Remove About.this and put List.this
            startActivity(returnhome);
        }
    }//<-- Close the setOnClickListener() with ");"
}


没关系,这是您的第一个问题,我会回答它,但是 现在 因为我愿意花时间向您解释您的代码有什么问题,所以请您花点时间:

How do I as a question on StackOverflow

Learn some Android basics

还有最重要的事情

如果您不了解基础知识,请勿复制粘贴互联网代码,我的意思是您可以复制粘贴代码,但每次这样做都会遇到这个问题,所以首先阅读教程,做一个例子,你就会每天进步。

【讨论】:

  • 嗨 Skizo,是的,非常感谢您抽出宝贵时间!我看到每次复制和粘贴代码时都会出错,而且大多数时候是因为我不知道什么是代码片段,什么不是。你对此有什么暗示吗?
  • 只看说明书,从头做起,不懂的不要尝试大事。只需阅读Learn Java,然后您就可以开始使用 Android。顺便说一句,如果我的回答对您有帮助,只需将其标记为正确就是绿色的复选标记。
  • 如果我解决了您的问题,请将其标记为正确的@MarcoDeRoni,您只需点击绿色复选框
  • 您还有问题吗?
  • 嗨@Skizo,再次感谢您的帮助。遗憾的是没有,因为有些代码没有被完全识别,但你已经完全回答了我的问题,我已经 +1 了你的答案,再次感谢堆
猜你喜欢
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多