Sar*_*nan 6 java android android-intent
是否有可能启动一个Activty使用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);
}
}
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)
是的,这是可能的。并且延长活动也没有必要。让我们将自定义类命名为 让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)
当一个类扩展时Activity,就会变成 Activity 类。所以,你的两个课程,subactivity 以及testclass活动课程。
是的,您可以从另一个班级开始一项活动。
\n\n按照下面的教程链接...您将了解如何从另一个活动启动一个活动
\n\nAndroid Activity \xe2\x80\x93 从一个屏幕到另一个屏幕
\n| 归档时间: |
|
| 查看次数: |
17386 次 |
| 最近记录: |