Java 如何调用具有onCreate参数的方法?
我正在尝试制作一个应用程序,让我能够使用Riot Games API跟踪游戏《传奇联盟》中某个用户的统计数据。我已经创建了一个方法,允许我解析服务器的胜负数量并计算它们之间的比率,但是我需要从onCreate内部调用它,或者从onCreate调用任何其他方法 方法如下:Java 如何调用具有onCreate参数的方法?,java,android,api,Java,Android,Api,我正在尝试制作一个应用程序,让我能够使用Riot Games API跟踪游戏《传奇联盟》中某个用户的统计数据。我已经创建了一个方法,允许我解析服务器的胜负数量并计算它们之间的比率,但是我需要从onCreate内部调用它,或者从onCreate调用任何其他方法 方法如下: public static void checkStats(String[] args) throws RiotApiException { RiotApi api = new RiotApi("DEVELOPER KE
public static void checkStats(String[] args) throws RiotApiException {
RiotApi api = new RiotApi("DEVELOPER KEY REDACTED");
Summoner summoner = api.getSummonerById(Region.EUW, "ID REDACTED");
RankedStats statsRanked = api.getRankedStats(Region.EUW, summoner.getId());
AggregatedStats rankedStats = statsRanked.getChampions().get(0).getStats();
wins = rankedStats.getTotalSessionsWon();
losses = rankedStats.getTotalSessionsLost();
ratio = wins / losses;
ratioView.setText(wins + " / " + losses + " | " + "Ratio : " + ratio);
}
赢家、输家、比率和比率视图均在上述代码中定义:
static int points, wins, losses, ratio, BOtarget, BOwins, BOlosses, BOprogress;
static TextView ratioView;
我试图使用此行调用此方法,但它表示checkstats(字符串[])不能应用于checkstats():
所以我试着用:
checkstats(null);
但现在,我得到一个未处理的异常:
Unhandled exception: net.rithms.RiotApiException
所有与API相关的导入都已正确完成
作为参考,我遵循以下示例:
谢谢你的帮助
编辑:整个活动代码:Android Java中的
onCreate
方法不是static
(与Java程序中的main
方法相比)
因此,在你的活动中,你不需要进行int点、赢、输、比、BOtarget、BOwins、BOlosses、BOprogress代码>或文本视图比率视图代码>变量<代码>静态
或。只需将它们定义为活动中的类级别变量
只需像这样定义您的方法,并从onCreate
public void checkStats() throws RiotApiException {
...
当您调用checkStats()
时,您需要将其包装在一个try-catch中,如下所示:
try {
checkStats();
} catch (RiotApiException e) {
// Handle the exception
Log.e("NewLayoutActivity", e.getMessage());
}
值得一提的是,您下面的示例是Java,而不是Android平台,因此您必须对代码进行一些调整。您不需要将它们设置为静态。您需要的是AsyncTask
在主线程后面进行API调用。我不确定Riot
是否处理异步。或者不是。您好,我尝试过这样做:但是现在我不知道如何从onCreate调用类。关于从onCreate调用类的代码/帮助有什么想法吗?如果我没有将int和textView设置为静态,那么当我尝试在statc方法中使用它们时,会出现一个错误:不能从静态上下文引用非静态字段“whatever”。另外,如果我删除字符串[]args部分并尝试调用它,我会得到RiotApiException。您的其他哪些方法是静态的?如果您只是从活动中调用这些方法,它们不需要是静态的。现在,这是代码中唯一的静态方法。我试图用public void替换public static void,并将int和textview声明为private,但我得到了相同的例外。你能在你的问题中发布你整个活动的代码吗?我将其添加为一个粘贴库链接,因为我无法在此网站上以代码格式正确显示它。顺便说一下,我正在使用一个带有3个片段的选项卡式活动。
try {
checkStats();
} catch (RiotApiException e) {
// Handle the exception
Log.e("NewLayoutActivity", e.getMessage());
}