如何从一个Java类调用start活动 [英] how to call the start activity from one java class
问题描述
是否可以在extends Activity
的通用java
类中使用Intent
来启动Activty
?
Is it possible to start an Activty
using an Intent
in a general java
class which extends Activity
?
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Spinner;
import android.app.Activity;
import android.content.Intent;
public class SubActivity extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
还有一个通用的Java类,如下所示:
And a general java class like the following
class TestClass extends Activity{
void firstsem(){
Intent t = new Intent(this, SubActivity.class);
t.putExtra("sub1","chemistry");
startActivity(t);
}
}
是否可以从一般的Java类启动Activity?有人可以告诉我如何实现这一目标吗?
Is it possible to start an Activity from an general java class? Could anybody show me how to achieve this?
推荐答案
要启动Activity
,您需要Context
.
方法startActivity(Intent intent)
继承自Context
类. 在文档中可以看到
另外,显式的Intent
本身在其构造函数中也需要一个Context
.
Also an explicit Intent
itself needs a Context
in its constructor.
Intent(Context packageContext, Class<?> cls)
与Activity extends Context
一样,您已经扩展了Activity,可以将自己的类用作Context.
因此只需调用
As Activity extends Context
and you've extended Activity you can use your own class as Context.
And thus simply call
void method() {
startActivity(new Intent(this, ActivityName.class));
}
如果您不想扩展Activity,可以将Context作为参数传递.
If you do not want to extend Activity you can pass the Context as an argument.
public static void startActivity(Context context) {
context.startActivity(new Intent(context, ActivityName.class));
}
基本实现
public class ActivityA extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate();
}
public void onClick(View view) {
ActivityStarter.startActivityB(this);
}
}
public class ActivityB extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate();
}
}
public class ActivityStarter {
public static void startActivityB(Context context) {
Intent intent = new Intent(context, ActivityB.class);
intent.putExtra("sub1","chemistry");
context.startActivity(intent);
}
}
这篇关于如何从一个Java类调用start活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!