在安卓中从一个活动调用另一个活动

46

我该如何从一个(当前的)活动中调用另一个活动?

同样,我想从我的当前活动中调用包含对话框消息框的活动。


6
这是您之前的问题的完全副本:http://stackoverflow.com/questions/5151159/calling-one-activity-from-another - RivieraKid
12个回答

54

第一个问题:

使用Intent调用另一个Activity。在清单文件中,您应该添加:

<activity android:name="ListViewImage"></activity>
<activity android:name="com.company.listview.ListViewImage">
</activity>

而在您当前的活动中,

btListe = (ImageButton)findViewById(R.id.Button_Liste);
    btListe.setOnClickListener(new OnClickListener()
    {    public void onClick(View v)
        {
            intent = new Intent(main.this, ListViewImage.class);
            startActivity(intent);
            finish();
        }
    });

第二个问题:

sendButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            String valueString = editValue.getText().toString();
            long value;
            if (valueString != null) {
                value = Long.parseLong(valueString);
            }
            else {
                value = 0;
            }

            Bundle sendBundle = new Bundle();
            sendBundle.putLong("value", value);

            Intent i = new Intent(Activity1.this, Activity2.class);
            i.putExtras(sendBundle);
            startActivity(i);

            finish();
        }
    });

并在Activity2中:

 Bundle receiveBundle = this.getIntent().getExtras();
    final long receiveValue = receiveBundle.getLong("value");
    receiveValueEdit.setText(String.valueOf(receiveValue));
    callReceiverButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            Intent i = new Intent(Activity2.this, Receiver.class);
            i.putExtra("new value", receiveValue - 10);
        }
    });

嘿...嗨...谢谢,但请告诉我,如果我想在完成第一个活动上的进度条后显示弹出消息怎么办。现在我已经创建了进度条,它可以运行,但我希望在进度条达到最大限制时显示弹出消息...请帮帮我。 - OnkarDhane
https://dev59.com/l3A75IYBdhLWcg3w7tx6 - LTEHUB

10

检查以下代码以从一个活动调用另一个活动。

Intent intent = new Intent(CurrentActivity.this, OtherActivity.class);
CurrentActivity.this.startActivity(intent);

5
我在我的样例应用程序中使用了以下代码来启动新的活动页面。
Button next = (Button) findViewById(R.id.TEST);
next.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        Intent myIntent = new Intent( view.getContext(), MyActivity.class);
        startActivityForResult(myIntent, 0);
    }
});

4

由于我们不知道您的活动类的名称,让我们称您当前的活动为Activity1,您希望打开的活动为Activity2(这些是类的名称)

首先,您需要定义一个将发送到Activity2的意图:

Intent launchActivity2 = new Intent(Activity1.this, Activity2.class);

然后,您可以通过运行以下命令来简单启动该活动:
startActivity(launchActivity2);


谢谢。现在在第一个活动中,我有一个进度条,当进度条完成(达到最大值)时,我想在另一个活动中显示弹出消息。请告诉我如何在第二个活动中实现弹出消息的功能。我的第一个活动已经结束了,请告诉我。 - OnkarDhane
1
你需要做的是使用意图(Intent)推送一些数据,让Activity2知道它需要展示什么。然后,在Activity2中处理传入的数据。 - Erez A. Korn
使用上下文而不是类名。 - Nirav Joshi

2
在您的按钮单击事件中添加以下内容:
Intent intent = new Intent(First.this, Second.class);
startActivity(intent);
finish();

1

这个任务可以通过使用Android的主要构建块之一——Intents和属于您的Activity类的一个方法public void startActivity (Intent intent)来完成。

Intent是要执行的操作的抽象描述。它可与startActivity一起使用,以启动Activity,broadcastIntent发送到任何感兴趣的BroadcastReceiver组件,并使用startService(Intent)或bindService(Intent、ServiceConnection、int)与后台Service通信。

Intent提供了在不同应用程序中的代码之间执行后期运行时绑定的功能。它最重要的用途是在启动活动时,它可以被视为活动之间的粘合剂。它基本上是一个被动数据结构,保存要执行的操作的抽象描述。

请参阅官方文档 -- http://developer.android.com/reference/android/content/Intent.html

public void startActivity (Intent intent) -- 用于启动新Activity。

因此,假设您有两个Activity类,在单击按钮的OnClickListener()上,您想从一个Activity移动到另一个Activity,则--

  1. PresentActivity -- 这是您当前的活动,您想从中转到第二个活动。

  2. NextActivity -- 这是您要移动的下一个活动(它可以包含任何内容,比如您正在说的对话框)。

因此,Intent将会是这样的。

Intent(PresentActivity.this, NextActivity.class)

最终这将是完整的代码。
  public class PresentActivity extends Activity {
        protected void onCreate(Bundle icicle) {
            super.onCreate(icicle);

            setContentView(R.layout.content_layout_id);

            final Button button = (Button) findViewById(R.id.button_id);
            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // Perform action on click   

                    Intent activityChangeIntent = new Intent(PresentActivity.this, NextActivity.class);

                    // currentContext.startActivity(activityChangeIntent);

                    PresentActivity.this.startActivity(activityChangeIntent);
                }
            });
        }
    }

这个例子与按钮点击相关,您可以在按钮点击的OnClickListener()中使用代码,在任何想要在活动之间切换的地方使用。

0

我已经实现了这种方式,它有效果。比所有报道的都要简单。

我们有两个活动:一个是主要活动,另一个是次要活动。

在次要活动中,也就是我们想要结束主要活动的地方,定义以下变量:

public static Activity ACTIVIDAD;

然后是下面的方法:

public static void enlaceActividadPrincipal(Activity actividad) 
{
    tuActividad.ACTIVIDAD=actividad;
}

然后,在您的主活动中从onCreate方法中进行调用:

    actividadSecundaria.enlaceActividadPrincipal(this);

现在,你有了控制权。现在,从你的次要活动中,你可以完成主要活动。像这样完成调用函数:

ACTIVIDAD.finish();

0

调用另一个活动的最简单方法是

startActivity( new Intent( getApplicationContext(), YourActivity.class ) );

这与其他答案中的解决方案7相同。我建议删除此“答案”,因为它在旧答案方面没有任何新的补充。 - Robin Topper
一个愚蠢的区别是,解决方案7比解决方案7优化了一些。@Robin Topper - Galvanize Monad

0
以下代码演示了如何通过意图启动另一个活动。
使用连接到指定类的意图启动活动。
Intent i = new Intent(this, ActivityTwo.class);
startActivity(i);

由其他Android活动启动的活动称为子活动。这个术语使得更容易描述所指的活动。


你应该阅读如何在 Meta 中发布代码的文章:http://meta.stackexchange.com/questions/51144/how-do-i-post-code-in-stackoverflow - Divyesh Kanzariya

0
将此代码放入MainActivity1.java的onCreate()方法中。
Button btnEins = (Button) findViewById(R.id.save);
        btnEins.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View v) {
                Intent intencion = new Intent(v.getContext(),MainActivity2.class );     
                startActivity(intencion);
            }

        });

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