如何从一个java类调用start活动

Sar*_*nan 6 java android android-intent

是否有可能启动一个Activty使用Intent在通用javaextends 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);
           }           
 }
Run Code Online (Sandbox Code Playgroud)

和一般的java类如下

class TestClass extends Activity{

       void firstsem(){
        Intent t = new Intent(this, SubActivity.class);
        t.putExtra("sub1","chemistry");                 
        startActivity(t);
   }
}
Run Code Online (Sandbox Code Playgroud)

是否可以从一般的java类启动一个Activity?有人能告诉我如何实现这个目标吗?

End*_*eit 10

要开始Activity你需要一个Context.

该方法startActivity(Intent intent)继承自Context该类.正如在文档中可以看到的那样

显式Intent本身也需要Context在其构造函数中.

Intent(Context packageContext, Class<?> cls)
Run Code Online (Sandbox Code Playgroud)

作为Activity extends Context并且您已经扩展了Activity,您可以将自己的类用作Context.因此只需打电话

void method() {
    startActivity(new Intent(this, ActivityName.class));
} 
Run Code Online (Sandbox Code Playgroud)

如果您不想扩展Activity,可以将Context作为参数传递.

public static void startActivity(Context context) {
    context.startActivity(new Intent(context, ActivityName.class));
} 
Run Code Online (Sandbox Code Playgroud)

基本实施

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);
    }
}
Run Code Online (Sandbox Code Playgroud)


Ake*_*Jha 5

是的,这是可能的。并且延长活动也没有必要。让我们将自定义类命名为 让Custom.java 我们假设我们需要在自定义类中调用NewActivity时启动该类。method()

步骤1:

正如EndZeit指出的那样,您需要 Custom.java 类中的 MainActivity 类的上下文才能从该点开始新的活动。

Custom custom = new Custom(MainActivity.this);

第2步:

在自定义类中,创建一个构造函数并接收传递的上下文:

Private Context context;
public Custom (Context context) {
    this.context = context;
}
Run Code Online (Sandbox Code Playgroud)

步骤 3:

现在,开始新活动:

public void method() {
    Intent intent = new Intent(context, NewActivity.class);
    context.startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

你完成了 :)


小智 5

只需使用任何 Java 类中的以下代码:

Intent i = new Intent(getContext(),TargetActivity.class);
getContext().startActivity(i);
Run Code Online (Sandbox Code Playgroud)


Ham*_*atu 1

当一个类扩展时Activity,就会变成 Activity 类。所以,你的两个课程,subactivity 以及testclass活动课程。

\n\n

是的,您可以从另一个班级开始一项活动。

\n\n

按照下面的教程链接...您将了解如何从另一个活动启动一个活动

\n\n

Android Activity \xe2\x80\x93 从一个屏幕到另一个屏幕

\n