在安卓系统中,如何通过编程方式切换活动?

47

好像我所能找到的每个在不同活动之间切换的例子都涉及创建一个Intent并通过与按钮关联的OnClickListener传递View的上下文。

但是如果你只是决定需要切换活动怎么办? 在我的情况下,偏好值导致了Activity的切换。

如何创建一个Intent,可以在没有关联OnClickListener的情况下导致Activity切换呢?

8个回答

91

这应该对你有所帮助:

Intent myIntent = new Intent(this, MyActivityName.class);
startActivity(myIntent);

你可以从当前活动的任何地方调用它。


1
能否将活动名称作为字符串传递? - mhshams
4
@Mohammad 根据我看到的公共签名,似乎不是这样的。但你可以使用 Class.forName(完全限定类名) 返回一个 Class 对象,然后将该 Class 对象传递给 Intent 构造函数。 - Chris Thompson
1
创建一个方法,读取用户输入并使用其子字符串作为参数通过反射调用另一个类,这将是一个可怕的想法。 - Rafael Lima

9

这取决于您想在代码中的哪个位置开始新的活动。您需要访问Context引用才能启动新活动(例如:AsyncTask中的onPostExecute)。请参阅此处

尽管基本上就是这样。

 Intent myIntent = new Intent(this, ActivityName.class);
 startActivity(myIntent);

它也可以是这样的

这里只是一个例子。

Intent myIntent = new Intent(context, ActivityName.class);
context.startActivity(myIntent);

1
我发现你犯了与被接受的答案相同的拼写错误,使用了类名“AvitivityName”;) 你本可以在评论中指出这一点的 :) - AxelH

5
我有最简短的版本。
startActivity(new Intent(CurrentActivity.this,ActivityYouWantToOpen.class));

5
startActivity (new Intent (Thisactivity.this, Nextactivity.class));

不要忘记在你的清单文件中添加活动

<Activity android:name=".NextActivity>

3
无论何时您想要切换活动,您都可以调用以下代码。
Intent intent = new Intent(this, MyActivity.class);
startActivity(intent);

您可以在PreferenceChangeListener中编写此代码。

你��全复制了另一个人的答案...请自己想出答案。 - Brian

2
你可以在主活动中像这样创建 intent
Intent intent = new Intent(FirstActivity.this, second.class);
startActivity(intent);

如果你正在等待第二个结果,那么你应该使用

StartActivityforresult(intent,请求代码).

请求代码可以是任何整数


1
首先,您需要使用layout intro_activity_1.XML文件为按钮创建UI。之后,使用android:id="@+id/button"为按钮组设置ID。

intro_activity_1.xml

<Button    android:id="@+id/button"    
android:layout_width="wrap_content"    
android:layout_height="wrap_content"    
android:layout_weight="1"    
android:background="@android:color/transparent"    
android:text="NEXT" />

现在修改你的第一个活动的Java类。在这个例子中,我们将更改IntroActivity1.java文件的Java文件。
示例:

IntroActivity1.java

//header, import and package data


public class IntroActivity1 extends AppCompatActivity {


    Button next_btn;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.intro_activity_1); 

           next_btn=(Button)findViewById(R.id.button);//button class

           next_btn.setOnClickListener(new View.OnClickListener(){
   public void onClick(View arg0){
       //Start new activity class
              Intent myIntent=new Intent(IntroActivity1.this,IntroActivity2.class);
             startActivity(myIntent);
      }
  });
}

了解更多有关活动更改器的详情,请访问:https://answerdone.blogspot.com/2018/01/how-to-change-new-activity-in-android.html


1
使用PreferenceChangeListener :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接