我应该将一个方法从一个活动调用到另一个活动。我的第一课是:
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)
答案 0 :(得分:0)
简而言之:你不应该。创建一个单独的(单例)类来处理两个活动都可以访问的kind()
逻辑。
答案 1 :(得分:0)
如果您需要在活动之间共享代码,则应将其导出到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)
。
答案 2 :(得分:0)
这不是你怎么做的。让我根据我的知识纠正你的代码。
new
用于扩展活动的类。现在,您如何从某些活动中访问其他活动的方法
((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;
}
}
希望它会有所帮助
答案 3 :(得分:0)
首先,当您从非UI线程调用UI(用户界面)方法时,会出现looper错误。在这种情况下,因为第二个活动没有作为意图启动,所以你启动它就会出现新的firstClass()坏事。Activitys有生命周期回调。 onCreate将引用传递给应该绘制的项目,通常至少是对布局setContentView(R.layout.activity_main)的引用; onStart是开始绘制。请记住Android支持许多屏幕尺寸,并且必须询问您想要放入活动的内容,有多少,android测量和数字如何显示然后调用onstart来显示它等等。主要是将Activity作为意图启动并阅读链接。在清单活动块中,您有Launcher,这意味着在显示屏上放置一个图标,以便在单击图标时启动活动。将活动作为意图开始的特殊方式。
答案 4 :(得分:0)
您只是不像在Java中那样在Android中实例化Activities
的实例。您应该创建Intents
并致电startActivity()
。为了使您的逻辑工作,我建议您使用BroadcastReceivers
。