【问题标题】:Calling a static method from other class Android Java从其他类 Android Java 调用静态方法
【发布时间】:2014-08-17 13:44:18
【问题描述】:

如何从MainActivity调用方法?被调用的方法在另一个类中是静态的。此代码在 PC 上运行良好,但在 Android 上失败。

这是 MainActivity 代码:

public class MainActivity extends ActionBarActivity {

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

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, 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();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

Metode.getDatum();
}

另一个公共类Metode,有一个静态方法getDatum()

public static String getDatum() {

    Calendar koledar = Calendar.getInstance();

    int[] datum = new int[3];

    datum[0] = koledar.get(Calendar.DAY_OF_MONTH);
    datum[1] = koledar.get(Calendar.MONTH);
    datum[2] = koledar.get(Calendar.YEAR);

    String datumString = Arrays.toString(datum);

    return datumString;
}

在出现此令牌错误后,我得到“预期标识符”。

这个应用只有一个活动,Metode 类是

public class Metode 

【问题讨论】:

  • 我不明白你的问题,你在哪里尝试调用 getDatum() 方法?你能提供一些代码吗?
  • @Stanislav 他在主要活动的底部一直调用该方法,在任何方法之外(这当然是无效的语法)。
  • @Override public boolean onCreateOptionsMenu(Menu menu) { // 膨胀菜单;如果存在,这会将项目添加到操作栏。 getMenuInflater().inflate(R.menu.main, menu);返回真;方法.getDatum();这也不起作用。 (从其他方法调用)。 无法解析。不要恨我,我做了一个很好的馅饼。

标签: java android methods static


【解决方案1】:

嗯,看来包声明有问题。

****package com.example.sluzba;****



import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Scanner;


public class Metode {

public static String getDatum() {

Calendar koledar = Calendar.getInstance();

int[] datum = new int[3];

datum[0] = koledar.get(Calendar.DAY_OF_MONTH);
datum[1] = koledar.get(Calendar.MONTH);
datum[2] = koledar.get(Calendar.YEAR);

String datumString = Arrays.toString(datum);

return datumString;

}

如果我从其他方法调用它,它现在运行。

所以我想,包声明(如果命名不正确,请纠正我)很重要。只是说,如果像我这样的 n00b 陷入同样的​​困境。 谢谢大家!!!高等人。干杯!

【讨论】:

    【解决方案2】:

    这段代码不应该工作。您必须通过其他方法调用Metode.getDatum();

    此外,此方法返回一个String,它被完全忽略。可能你想在某个地方使用这个?

    【讨论】:

    • 嗯,好的。我会在脑海中重复这件事几次,创建一个方法,如果它有效就回来。谢谢你。
    • 我有一种感觉,你不太明白你在做什么。我说的对吗?
    • 此返回的字符串稍后用于将获取的日期写入 .txt 文件。并且代码可以在 Android 环境之外运行。我将调用放在一个 void 方法中,现在我再次收到“无法解析 Metode”和“之后预期的标识符”错误。我想我知道我想调用一个在其他类中声明的静态方法。
    • 不行,在这种地方调用方法是不正确的语法,这与Android无关。在普通的 Java 中也是一样的错误。
    • 哦,在 Java 中,它是从 main 方法调用的。谢谢,伙计们。但是,还是。有什么建议么?我在书本上工作,但与此同时,我喜欢编写代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2019-12-15
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    相关资源
    最近更新 更多