是否可以在extends Activity
的通用java
类中使用Intent
启动Activty
?
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类,如下所示class TestClass extends Activity{
void firstsem(){
Intent t = new Intent(this, SubActivity.class);
t.putExtra("sub1","chemistry");
startActivity(t);
}
}
是否可以从通用 java 类启动活动?谁能告诉我如何实现这一目标?
要开始Activity
您需要一个Context
。
方法startActivity(Intent intent)
继承自 Context
类。如文档所示
此外,显式Intent
本身需要在其构造函数中Context
。
Intent(Context packageContext, Class<?> cls)
随着Activity extends Context
并且您已经扩展了活动,您可以将自己的类用作上下文。因此只需调用
void method() {
startActivity(new Intent(this, ActivityName.class));
}
如果不想扩展活动,可以将上下文作为参数传递。
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);
}
}
是的,这是可能的。扩展活动也是不必要的。我们将自定义类命名为 Custom.java
假设我们需要在自定义类中调用method()
时启动NewActivity
类。
第 1 步:
正如 EndZeit 指出的那样,您需要在 Custom.java 类中 MainActivity 类的上下文才能从该点开始新活动。
Custom custom = new Custom(MainActivity.this);
第 2 步:
在自定义类中,创建一个构造函数并接收传递的上下文:
Private Context context;
public Custom (Context context) {
this.context = context;
}
第 3 步:
现在,启动新活动:
public void method() {
Intent intent = new Intent(context, NewActivity.class);
context.startActivity(intent);
}
你完了:)
只需使用任何 Java 类中的以下代码:
Intent i = new Intent(getContext(),TargetActivity.class);
getContext().startActivity(i);
更改此行:
Intent t= new Intent(testclass.this,Subject.class);
自:
Intent t= new Intent(testclass.this,subactivity.class);
此外,在清单文件中放置对子活动的引用
像这样:
<activity android:name="com.example.app.subactivity" />
在 Kotlin 中,这就是您可以做到的
我假设你有context
可用
val intent = Intent(context, YourActivity::class.java)
context.startActivity(intent)
(context as Activity).finish()
在一行代码中启动新活动。
startActivity(new Intent(this, ActivityName.class));
当一个类扩展时Activity
然后转到活动类。所以,你的两个类,subactivity
和testclass
,活动类。
是的,您可以从另一个类开始活动。
按照以下教程链接...您将了解如何从另一个活动开始活动
安卓活动 – 从一个屏幕到另一个屏幕