【问题标题】:In android how do I call StartActivity() from a global function?在 android 中,如何从全局函数调用 StartActivity()?
【发布时间】:2013-07-30 18:26:11
【问题描述】:

所以我正在尝试创建一个所有注销按钮都会调用的注销函数。

我找到了这个页面creating global functions in android

我开始编写一个全局函数,但它拒绝识别 startActivity()

这是我的代码

import android.content.Intent;

public class Utilities {


public static void Logout(){
    System.out.println("Logging Out");
    Intent i = new Intent(getBaseContext(), MainActivity.class);
    startActivity(i);
 }
}

getBaseContext() 也给了我一个错误,但我能够找到另一个解决方法(我认为,无法对其进行测试)。

【问题讨论】:

    标签: android android-activity global start-activity


    【解决方案1】:

    您将需要活动上下文。

     public class Utilities {
     public static void Logout(Context context){
     Log.i("Utilities","Logging Out");
     Intent i = new Intent(context, MainActivity.class);
     context.startActivity(i);
     }
     }
    

    startActivity 是您的活动类的方法。所以你需要活动上下文。

    http://developer.android.com/reference/android/content/Context.html#startActivity(android.content.Intent)

    【讨论】:

    • +1 很好的解释!我忘了添加为什么要通过ActivityContext
    • 所以我会用 Utilities.logout(getBaseContext()) 在线程中调用它?
    • 哦,是的,你应该用一些东西替换 getBaseContext()
    • @user2312638 使用活动上下文,即context
    • @user2312638 使用Utilities.logout(MyActivityName.this)
    【解决方案2】:

    添加您当前活动的参数 (from)。然后用它调用你的静态方法。

    public static void Logout(Activity from){
        System.out.println("Logging Out");
        Intent i = new Intent(from, MainActivity.class);
        from.startActivity(i);
     }
    }
    

    【讨论】:

      【解决方案3】:

      您应该尝试将Activity 中的Context 传递给它。

      public class Utilities {
      
          public static void Logout(Context c) {
              System.out.println("Logging Out");
              Intent i = new Intent(c, MainActivity.class);
              c.startActivity(i);
          }
      }
      

      所以当你从Activity调用它时

      但是,另一种方法是创建一个BaseActivity,其中extends Activity 并在其中具有该功能。然后从BaseActivity 扩展您的所有Activities 并使用<include 标记将Button 包含在每个layout 文件中,可能作为页眉、页脚或其他任何内容。

      Utlities.Logout(this);
      

      【讨论】:

        猜你喜欢
        • 2018-05-23
        • 2019-09-17
        • 2019-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多