[英]Passing data from one class to another
在B类中,我有以下方法:
public String sendPlayerDataMethod() {
String testt = "thissss is for testing";
/***
Intent sendPlayerData = new Intent(this, FullPlayerList.class);
sendPlayerData.putExtra(Intent.EXTRA_TEXT, testt);
startActivity(sendPlayerData);
***/
return testt;
}
在A类中,我只想简单地调用此方法。 我以为ClassB.sendPlayerDataMethod()
可以解决问题,但是当我键入它时,IntelliJ似乎没有ClassB.sendPlayerDataMethod()
。
这两堂课都是公开的...
我想调用该方法,然后将返回值分配给ClassA中的var。
谢谢
您的方法实际上是正确的,没有问题。 您仍然出现此行为的最可能原因是由于您引用该方法的方式(来自A类)。 有两种方法可以解决此问题:
第一种方法(也是更快的方法)是使sendPlayerDataMethod()
静态,然后在类A中像这样引用它:
ClassB.sendPlayerDataMethod();
另一种选择是使其为非静态。 在这种情况下,必须使用该方法创建一个B类的对象。 像这样:
ClassB b = new ClassB(); b.sendPlayerDataMethod();
希望对您有所帮助。
听起来您想将信息从一个活动传递到另一个活动。
常见的方法是在类A中创建一个Intent(就像在您的注释代码中一样),并通过从类B中的savedInstance
访问有关onCreate()
方法的信息来接收该意图。
不要编写诸如静态属性和内容之类的肮脏技巧。 遵循活动生命周期 。
public class ActivityA extends Activity {
...
public void sendPlayerDataMethod() {
String test = "thissss is for testing";
Intent sendPlayerData = new Intent(this, ActivityB.class);
sendPlayerData.putExtra(Intent.EXTRA_TEXT, test);
startActivity(sendPlayerData);
}
...
}
public class ActivityB extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
String test = savedInstanceState.getString(Intent.EXTRA_TEXT);
Log.i("MyApp", test); // log your String in LogCat
}
}
(此代码只是在没有IDE的情况下在此处开发的,因此无法保证)
在A类中:
非静态方式:
B b = new B(); String data = b.sendPlayerDataMethod();
静态方式:
String data = B.sendPlayerDataMethod(); // Set the sendplayerdatamethod to static
确保该方法是静态的,如下所示:
public static String sendPlayerDataMethod() {
String testt = "thissss is for testing";
/*** Intent sendPlayerData = new Intent(this, FullPlayerList.class);
sendPlayerData.putExtra(Intent.EXTRA_TEXT, testt);
startActivity(sendPlayerData);***/
return testt;
}
然后可以从A类调用它,如下所示:
classB.sendPlayerDataMethod();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.