如何从Activity调用另一个Activity中的方法

正在开发一个我有的Android应用程序

我有两个classA和Bclass。

在A类中,我尝试了下面的代码段,

如何从Activity调用另一个Activity中的方法。

public class FirstActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); } public void method() { // some code } } public class SecondActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); FirstActivity fact = new FIrstActivity(); fact.method(); } } 

Solutions Collecting From Web of "如何从Activity调用另一个Activity中的方法"

您不应创build活动类的实例。 这是错误的。 活动有ui,生命周期和活动由startActivity(intent)启动

您可以使用startActivityForResult或者您可以使用意图将值从一个活动传递到另一个活动,并执行所需的操作。 但这取决于你打算在这个方法中做什么。

startActivityForResult模式更适合您要实现的内容: http : //developer.android.com/reference/android/app/Activity.html#StartingActivities

尝试下面的代码

 public class MainActivity extends Activity { Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView1=(TextView)findViewById(R.id.textView1); button1=(Button)findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent=new Intent(MainActivity.this,SecondActivity.class); startActivityForResult(intent, 2);// Activity is started with requestCode 2 } }); } // Call Back method to get the Message form other Activity @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // check if the request code is same as what is passed here it is 2 if(requestCode==2) { //do the things u wanted } } } 

SecondActivity.class

 public class SecondActivity extends Activity { Button button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); button1=(Button)findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { String message="hello "; Intent intent=new Intent(); intent.putExtra("MESSAGE",message); setResult(2,intent); finish();//finishing activity } }); } } 

让我知道,如果它帮助…

如果您需要从两个活动中调用相同的方法,为什么不使用第三个对象?

 public class FirstActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); } // Utility.method() used somewhere in FirstActivity } public class Utility { public static void method() { } } public class SecondActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); Utility.method(); } } 

当然,使其静态取决于用例。

在FirstActivity中声明一个SecondActivityvariables

喜欢这个

 public class FirstActivity extends Activity { SecondActivity secactivity; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); } public void method() { // some code secactivity.call_method();// 'Method' is Name of the any one method in SecondActivity } } 

使用这种格式,你可以调用任何方法从一个活动到另一个。