繁体   English   中英

如何在另一个活动中调用方法

[英]how to call method in another activity

我应该从一个活动到另一个活动调用一个方法。 我的头等舱是:

public class firstclass extends Activity {
    public String Kind(){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    boolean Key = preferences.getBoolean("Key", true);
    if(Key){
        name="you";
    }
    else{
        name="me";
    }
    return name;
    }
}

第二类是:

public class secondclass extends Activity {
    public void take(String token, int transactionId) {
        firstclass first = new firstclass(); //error in this class
        first.Kind();
   }
}

我的错误是:

03-25 19:05:39.082    5421-5487/com.example.com E/AndroidRuntime﹕ FATAL          EXCEPTION: pool-5-thread-1
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
        at android.os.Handler.<init>(Handler.java:197)
        at android.os.Handler.<init>(Handler.java:111)
        at android.app.Activity.<init>(Activity.java:759)
        at com.example.com.firstclass<init>(firstclass.java:17)
        at com.example.com.secondclass(secondclass.java:157)

简而言之:您不应该。 制作一个单独的(单例)类,该类处理两种活动都可以访问的kind()逻辑。

如果您有需要在活动之间共享的代码,则应将其导出到Helper类。

例:

public class KindUtils {
    public static String Kind(Context context){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    boolean Key = preferences.getBoolean("Key", true);
    if(Key){
        name="you";
    }
    else{
        name="me";
    }
    return name;
    }
}

现在,您可以在两个活动中调用KindUtils.Kind(this)

那不是你做的方式。 让我根据我的知识更正您的代码。

  1. 始终确保类名应以大写字母开头,其java类命名约定
  2. 始终使用骆驼套作为方法名称,从小写字母开始。
  3. 您不能将关键字new用于扩展Activity的类。

现在如何从某个活动中访问其他活动的方法

((Firstclass)getActivity()).kind;

这就是您从android中其他类访问方法的方式。

public class Firstclass extends Activity {
    public String kind(){
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    boolean Key = preferences.getBoolean("Key", true);
    if(Key){
        name="you";
    }
    else{
        name="me";
    }
    return name;
    }
}

在二等班,你会做

public class Secondclass extends Activity {
    public void take(String token, int transactionId) {
        String str= ((Firstclass)getActivity()).kind;
   }
}

希望对你有帮助

首先,当您从非UI线程调用UI(用户界面)方法时,会发生弯针错误。 在这种情况下,因为第二个活动不是出于意图而启动的,所以您将其启动是因为新的firstClass()会发生不好的事情。 活动具有生命周期回调。 onCreate可以将引用传递给应该绘制的项目,通常至少是对布局setContentView(R.layout.activity_main);的引用,onStart是开始绘制。 请记住,Android支持多种屏幕尺寸,并且必须询问您要添加到活动中的内容,多少,Android度量和数字如何显示,然后调用onstart来显示它,等等。 最主要的是将Activity作为Intent启动并阅读链接。 在清单活动块中,您具有启动器,这意味着在图标上放置一个图标以在单击该图标时启动一个活动。 一种启动活动的特殊方式。

您只需不像在Java中那样实例化Android中的Activities实例。 您应该创建Intents并调用startActivity() 为了使您的逻辑起作用,我建议您使用BroadcastReceivers

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM