如何从一个 Java 类调用 Start 活动



是否可以在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然后转到活动类。所以,你的两个类,subactivitytestclass,活动类。

是的,您可以从另一个类开始活动。

按照以下教程链接...您将了解如何从另一个活动开始活动

安卓活动 – 从一个屏幕到另一个屏幕

最新更新