0

我在编写android时遇到了这个问题。如果我的主类中有一个非静态方法(内部代码必须是非静态的),我应该如何从另一个类中调用它,因为显然我不能创建另一个实例我的主类没有启动程序的新实例?

public class MainActivity extends FragmentActivity {
public static String starttime = "";
public static String startdate = "";
public static String endtime = "";
public static String enddate = "";
public static boolean start = false;
}

public void setDateText() {
    EditText TextStart = (EditText)findViewById(R.id.txt_start);
    TextStart.setText(startdate + " at " + starttime, TextView.BufferType.NORMAL);
    EditText TextEnd = (EditText)findViewById(R.id.txt_end);
    TextEnd.setText(enddate + " at " + endtime, TextView.BufferType.NORMAL);
}

关于如何setDateText()从另一个类调用该方法的任何帮助?

提前致谢

4

4 回答 4

0

我试图了解您需要从另一个活动中调用该函数。无论如何,您的主要活动不在前台,因此如果您从那里调用此函数,则不会显示日期。一旦你完成了第二个活动,你将回到 MainActivity,那么只有你需要调用这个函数。

如果是这样,那么您可以使用 startActivityForResult() 启动第二个活动,然后通过 onActivityResult() 将日期信息传递回 MainActivity。您可以在 MainActivity 本身中调用此函数。

于 2013-09-06T18:56:53.020 回答
0

在不知道哪个其他类试图访问该MainActivity实例的情况下,您需要将此实例的引用传递给您的其他对象,可能是通过传递this给构造函数或方法。

例如

public class MainActivity extends FragmentActivity {
    public void someMethod() {
        SomeClass someClass = new SomeClass(this); // pass this for callbacks
        // ~ more
    }
}

whereSomeClass是一个需要调用MainActivity'setDateText方法的类。

于 2013-09-06T18:46:37.883 回答
0

通常你不能从静态类型调用非静态方法,所以你会这样做:

MainActivity m = new MainActivity(); // No constructor needed in class def.

m.setDateText();

但是,当程序启动时,您并没有在开始时给您的 JVM 提供任何可调用的内容,因此您需要添加:

  @Override
//the function called when activity is created
public void onCreate(Bundle savedInstanceState) {
    //call the create fct. Of the base class
    super.onCreate(savedInstanceState);
    //load the layout specified in the layout.xml
    setContentView(R.layout.main);

    MainActivity m = new MainActivity();

    m.setDateText();
} 

这将在创建活动时调用。

转到Android - 初学者指南了解更多信息。

还要注意你的语法,你的方法 def 在你的类 def 之外。

于 2013-09-06T19:00:02.187 回答
0

如果您必须setDate()在活动启动时调用,您可以在启动活动时传递日期并在'方法Intent中提取日期。MainActivityonCreate

如果您必须在启动之外的不同时间调用 setDate(),您可以从其他活动/组件发送广播,并MainActivity监听Broadcast并从意图数据中提取日期。

于 2013-09-06T19:09:04.200 回答