将数据从一个类传递到另一个类

时间:2018-04-04 12:36:48

标签: java android

在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似乎无法接受它。

这两个班级都是公开的......
我想调用该方法,然后将返回值赋给ClassA中的var ...

由于

4 个答案:

答案 0 :(得分:1)

你的方法实际上是正确的,它没有问题。您仍然获得此行为的最可能原因是因为您引用该方法的方式(来自A类)。有两种方法可以解决这个问题:

  • 第一种方法(以及更快的方法)是让你的sendPlayerDataMethod()静态,然后在A类中引用它:

    ClassB.sendPlayerDataMethod();
    
  • 另一种选择是使其成为非静态的。在这种情况下,您必须先创建B类对象,然后才能使用该方法。像这样:

    ClassB b = new ClassB();
    b.sendPlayerDataMethod();
    

我希望这有帮助..快乐编码!

答案 1 :(得分:1)

听起来您想将信息从一个活动传递到另一个活动。

常见的方法是在A类中创建一个Intent(就像在您的注释代码中一样),并通过从B类中onCreate()访问savedInstance方法的信息来接收意图。

不要编写像静态属性和东西这样的肮脏技巧。跟着 Activity Lifecycle

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的情况下开发的,所以不能保证)

答案 2 :(得分:0)

在A班:

  • 非静态方式:

    B b = new B();
    String data = b.sendPlayerDataMethod();
    
  • 静态方式:

    String data = B.sendPlayerDataMethod();
    // Set the sendplayerdatamethod to static
    

答案 3 :(得分:0)

确保方法是静态的,如下所示:

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();