【问题标题】:How to execute a non static method from a static method如何从静态方法执行非静态方法
【发布时间】:2014-09-04 03:31:32
【问题描述】:

我是 android/java 开发的新手,所以我遇到了一些问题,这就是其中之一。 我想在getTickets 中使用recevieResults 返回的结果。我试图将 getTickets 设为静态,但它有

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);

因此静态方法不允许 getApplicationContext。

public static void receiveResults(String result2) {

usersXML = result2; 


}

public void getTickets() {

//this method users usersXML from above and needs to execute after receiving the results

}

【问题讨论】:

  • 更改为 public static void getTickets(Context ctx) 并将 getApplicationContext() 替换为 ctx。你必须从你的活动/片段/无论如何传递Context
  • 如何从我的活动中传递上下文?很抱歉我缺乏知识,非常感谢您的帮助!
  • @user3785656 是否有任何具体原因让您将 receiveResults(..) 方法设为静态?
  • 我将结果从另一个活动发送到这些方法所在的活动 - 如果我只是将结果变量设为静态,它不会以正确的顺序执行。希望这是有道理的!谢谢
  • 不能从静态方法调用非静态方法。你必须改变其中之一......

标签: java android static-methods execution


【解决方案1】:

如果你有课:

public class ViewTicket extends Activity {
    public static <result> recieveResults(Context context, String result2) {
        ViewTicket ticket = (ViewTicket) context;

        return <result>
    }

    public void getTickets(<result> result) {
        // user <result> as you wish.
        SharedPreference pref = this.getSharedPreferences("MyPref", 0);
    }


}

调用静态方法并将对象传递给它。

ViewTicket myTicket = new ViewTicket();
<result> = ViewTicket.recieveResults(myTicket, "<someString>");

myTicket.getTickets(<result>);

【讨论】:

  • 您应该将“Activity”替换为您的活动名称,因为它正在扩展活动。
  • 我试过了: public static void receiveResults(String result2) { usersXML = result2; getTickets(这个); } public void getTickets(Context context) { ViewTickets _activity = (ViewTickets) context; SharedPreferences pref = _activity.getApplicationContext().getSharedPreferences("MyPref", 0); //该方法使用上面的usersXML,收到结果后需要执行 }
  • 在另一个活动中,我使用该方法传递结果 viewTickets.receiveResults(result);所以我也需要添加上下文吗?
  • 更新的答案,我认为这就是你所需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多