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

时间:2014-02-19 17:50:28

标签: java android android-intent

是否可以在Activty的{​​{1}}课程Intent中使用java开始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类如下

class TestClass extends Activity{

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

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

5 个答案:

答案 0 :(得分:8)

要开始Activity,您需要Context

方法startActivity(Intent intent)继承自Context类。 As it can be seen in the Documentation

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

Intent(Context packageContext, Class<?> cls)

作为Activity extends Context并且你已经扩展了Activity,你可以使用自己的类作为Context。 因此,只需致电

void method() {
    startActivity(new Intent(this, ActivityName.class));
} 

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

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);
    }
}

答案 1 :(得分:1)

更改此行:

Intent t= new Intent(testclass.this,Subject.class);

为:

Intent t= new Intent(testclass.this,subactivity.class);

另外,在您的清单文件中引用子活动

类似的东西:

<activity android:name="com.example.app.subactivity" />

答案 2 :(得分:1)

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

Intent i = new Intent(getContext(),TargetActivity.class);
getContext().startActivity(i);

答案 3 :(得分:0)

当一个类扩展Activity然后转向Activity类。因此,您的两个班级subactivitytestclass,活动类。

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

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

Android activity – from one screen to another screen

答案 4 :(得分:0)

  

在Kotlin中,这是您的操作方式

我假设您有context个可用

val intent = Intent(context, YourActivity::class.java)
context.startActivity(intent)
(context as Activity).finish()