在Android应用程序中,如何在单击另一个活动中的按钮时如何启动新活动(GUI),以及如何在这两个活动之间传递数据?


#1楼

伊曼纽尔

我认为应该在开始活动之前放置额外的信息,否则,如果您正在NextActivity的onCreate方法中访问数据,则数据将不可用。

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);myIntent.putExtra("key", value);CurrentActivity.this.startActivity(myIntent);

#2楼

您可以尝试以下代码:

Intent myIntent = new Intent();
FirstActivity.this.SecondActivity(myIntent);

#3楼

Intent iinent= new Intent(Homeactivity.this,secondactivity.class);
startActivity(iinent);

#4楼

    Intent in = new Intent(getApplicationContext(),SecondaryScreen.class);    startActivity(in);This is an explicit intent to start secondscreen activity.

#5楼

当用户单击按钮时,直接在XML内是这样的:

<Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TextButton"android:onClick="buttonClickFunction"/>

使用属性android:onClick我们声明必须在父活动中出现的方法名称。 因此,我必须像这样在我们的活动中创建此方法:

public void buttonClickFunction(View v)
{Intent intent = new Intent(getApplicationContext(), Your_Next_Activity.class);startActivity(intent);
}

#6楼

从发送活动中尝试以下代码

   //EXTRA_MESSAGE is our key and it's value is 'packagename.MESSAGE'public static final String EXTRA_MESSAGE = "packageName.MESSAGE";@Overrideprotected void onCreate(Bundle savedInstanceState) {....//Here we declare our send buttonButton sendButton = (Button) findViewById(R.id.send_button);sendButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//declare our intent object which takes two parameters, the context and the new activity name// the name of the receiving activity is declared in the Intent ConstructorIntent intent = new Intent(getApplicationContext(), NameOfReceivingActivity.class);String sendMessage = "hello world"//put the text inside the intent and send it to another Activityintent.putExtra(EXTRA_MESSAGE, sendMessage);//start the activitystartActivity(intent);}

从接收活动中尝试以下代码:

   protected void onCreate(Bundle savedInstanceState) {//use the getIntent()method to receive the data from another activityIntent intent = getIntent();//extract the string, with the getStringExtra method
String message = intent.getStringExtra(NewActivityName.EXTRA_MESSAGE);

然后只需将以下代码添加到AndroidManifest.xml文件中

  android:name="packagename.NameOfTheReceivingActivity"android:label="Title of the Activity"android:parentActivityName="packagename.NameOfSendingActivity"

#7楼

Intent i = new Intent(firstactivity.this, secondactivity.class);
startActivity(i);

#8楼

当前的反应很好,但是对于初学者来说,需要一个更全面的答案。 有3种不同的方法可以在Android中启动新活动,它们都使用Intent类。 意图 Android开发人员 。

  1. 使用按钮的onClick属性。 (初学者)
  2. 通过匿名类分配OnClickListener() 。 (中间)
  3. 活动范围接口方法使用switch语句。 (专业版)

如果您想继续,以下是我的示例的链接 :

1.使用按钮的onClick属性。 (初学者)

按钮具有.xml文件中的onClick属性:

<Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="goToAnActivity"android:text="to an activity" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="goToAnotherActivity"android:text="to another activity" />

在Java类中:

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_activity);
}public void goToAnActivity(View view) {Intent intent = new Intent(this, AnActivity.class);startActivity(intent);
}public void goToAnotherActivity(View view) {Intent intent = new Intent(this, AnotherActivity.class);startActivity(intent);
}

优点 :易于即时制作,模块化,并且可以轻松地将多个onClick设置为相同的意图。

缺点 :审查时可读性差。

2.通过匿名类分配OnClickListener() 。 (中间)

这是当您为每个button设置单独的setOnClickListener()并以其自己的意图覆盖每个onClick()时。

在Java类中:

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_activity);button1 = (Button) findViewById(R.id.button1);button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(view.getContext(), AnActivity.class);view.getContext().startActivity(intent);}});button2 = (Button) findViewById(R.id.button2);button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(view.getContext(), AnotherActivity.class);view.getContext().startActivity(intent);}});

优点 :易于即时制作。

劣势 :将有很多匿名类,这将使审阅时的可读性变得困难。

3.使用switch语句的活动范围接口方法。 (专业版)

这是在onClick()方法中对按钮使用switch语句来管理所有Activity的按钮时。

在Java类中:

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_activity);button1 = (Button) findViewById(R.id.button1);button2 = (Button) findViewById(R.id.button2);button1.setOnClickListener(this);button2.setOnClickListener(this);
}@Override
public void onClick(View view) {switch (view.getId()){case R.id.button1:Intent intent1 = new Intent(this, AnActivity.class);startActivity(intent1);break;case R.id.button2:Intent intent2 = new Intent(this, AnotherActivity.class);startActivity(intent2);break;default:break;}

优点 :按钮管理简单,因为所有按钮意图都在一个onClick()方法中注册


对于问题的第二部分,传递数据,请参阅如何在Android应用程序的“活动”之间传递数据?


#9楼

启动新活动的方法是广播意图,您可以使用一种特定的意图将数据从一个活动传递到另一个活动。 我的建议是您检查与意图有关的Android开发人员文档; 这是关于该主题的大量信息,并且也有示例。


#10楼

简单。

Intent myIntent = new Intent(CurrentActivity.this, NextActivity.class);
myIntent.putExtra("key", value); //Optional parameters
CurrentActivity.this.startActivity(myIntent);

通过以下方式在另一侧检索额外内容:

@Override
protected void onCreate(Bundle savedInstanceState) {Intent intent = getIntent();String value = intent.getStringExtra("key"); //if it's a string you stored.
}

不要忘记在AndroidManifest.xml中添加新活动:

<activity android:label="@string/app_name" android:name="NextActivity"/>

#11楼

为ViewPerson活动创建一个意图,并传递PersonID(例如,用于数据库查找)。

Intent i = new Intent(getBaseContext(), ViewPerson.class);
i.putExtra("PersonID", personID);
startActivity(i);

然后,在ViewPerson Activity中,您可以获取额外的数据包,确保它不为null(以防有时不传递数据),然后获取数据。

Bundle extras = getIntent().getExtras();
if(extras !=null)
{personID = extras.getString("PersonID");
}

现在,如果您需要在两个活动之间共享数据,则还可以拥有一个全局单例。

public class YourApplication extends Application
{     public SomeDataClass data = new SomeDataClass();
}

然后通过以下任何方式在任何活动中调用它:

YourApplication appState = ((YourApplication)this.getApplication());
appState.data.CallSomeFunctionHere(); // Do whatever you need to with data here.  Could be setter/getter or some other type of logic

#12楼

试试这个简单的方法。

startActivity(new Intent(MainActivity.this, SecondActivity.class));

#13楼

从另一个活动开始一个活动是android应用程序中非常常见的情况。
要启动活动,您需要一个Intent对象。

如何创建意图对象?

一个意图对象在其构造函数中带有两个参数

  1. 语境
  2. 要启动的活动的名称 。 (或完整的包裹名称)

例:

因此,例如,如果您有两个活动,例如说HomeActivityDetailActivity并且想从HomeActivity (HomeActivity-> DetailActivity)启动DetailActivity

这是显示如何从以下位置启动DetailActivity的代码段

家庭活动。

Intent i = new Intent(HomeActivity.this,DetailActivity.class);
startActivity(i);

您完成了。

回到按钮点击部分。

Button button = (Button) findViewById(R.id.someid);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent i = new Intent(HomeActivity.this,DetailActivity.class);startActivity(i);  }});

#14楼

实现View.OnClickListener接口,并重写onClick方法。

ImageView btnSearch;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_search1);ImageView btnSearch = (ImageView) findViewById(R.id.btnSearch);btnSearch.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.btnSearch: {Intent intent = new Intent(Search.this,SearchFeedActivity.class);startActivity(intent);break;}

#15楼

从该活动开始另一个活动,您也可以通过Bundle Object传递参数。

Intent intent = new Intent(getBaseContext(), YourActivity.class);
intent.putExtra("USER_NAME", "xyz@gmail.com");
startActivity(intent);

检索另一个活动(YourActivity)中的数据

String s = getIntent().getStringExtra("USER_NAME");

#16楼

尽管已经提供了正确的答案,但是我在这里是用Kotlin语言搜索答案的。 这个问题与语言无关,因此我添加了代码以Kotlin语言完成此任务。

这是您在Kotlin中为Andorid进行的操作

testActivityBtn1.setOnClickListener{val intent = Intent(applicationContext,MainActivity::class.java)startActivity(intent)}

#17楼

首先在xml中获取Button。

  <Buttonandroid:id="@+id/pre"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@mipmap/ic_launcher"android:text="Your Text"/>

制作按钮的列表器。

 pre.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, SecondActivity.class);startActivity(intent);}});

#18楼

单击按钮时:

loginBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent= new Intent(getApplicationContext(), NextActivity.class);intent.putExtra("data", value); //pass datastartActivity(intent);}
});

要从NextActivity.class接收额外的数据:

Bundle extra = getIntent().getExtras();
if (extra != null){String str = (String) extra.get("data"); // get a object
}

#19楼

在您的第一个活动中编写代码。

button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(MainActivity.this, SecondAcitvity.class);//You can use String ,arraylist ,integer ,float and all data type.intent.putExtra("Key","value");startActivity(intent);finish();}});

在secondActivity.class中

String name = getIntent().getStringExtra("Key");

#20楼

将按钮小部件放置在xml中,如下所示

<Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button"
/>

之后初始化并处理活动中的点击监听器,如下所示。

在Activity On Create方法中:

Button button =(Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Intent intent = new Intent(CurrentActivity.this,DesiredActivity.class);startActivity(intent);}
});

#21楼

科特林

第一次活动

startActivity(Intent(this, SecondActivity::class.java).putExtra("key", "value"))

第二次活动

val value = getIntent().getStringExtra("key")

建议

始终将密钥放置在常量文件中,以实现更好的管理方式。

companion object {val PUT_EXTRA_USER = "user"
}
startActivity(Intent(this, SecondActivity::class.java).putExtra(PUT_EXTRA_USER, "value"))

#22楼

单击按钮打开活动的最简单方法是:

  1. 在res文件夹下创建两个活动,在第一个活动中添加一个按钮,并为onclick函数命名。
  2. 每个活动应有两个Java文件。
  3. 下面是代码:

MainActivity.java

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.content.Intent;
public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void goToAnotherActivity(View view) {Intent intent = new Intent(this, SecondActivity.class);startActivity(intent);}
}

SecondActivity.java

package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class SecondActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity1);}
}

AndroidManifest.xml(只需将此代码块添加到现有代码中)

 </activity><activity android:name=".SecondActivity"></activity>

如何在单击按钮时启动新活动相关推荐

  1. 编写Java程序,在屏幕上显示带标题的窗口,并添加一个按钮。当用户单击按钮时,结束程序。

    编写Java程序,在屏幕上显示带标题的窗口,并添加一个按钮.当用户单击按钮时,结束程序. package p3;import java.awt.event.ActionEvent; import ja ...

  2. python 获取文本框内容_如何在python中单击按钮时获取文本框中的文本?

    我可以让您的代码在单击按钮时显示文本框中的文本: 这就是你要达到的目的吗?您没有提到是否出现错误,但我确实发现您的代码存在两个问题:Button.py脚本中似乎存在一些缩进问题.在 对于changeT ...

  3. android 按钮点击声音,如何在Android中单击按钮时播放声音?

    这里有一些事情(免责声明,这就是我习惯使用它的方式,可能有更好的方法): >您似乎每次点击的工作量比您需要的多得多.您正在为Activity的视图中的每次单击创建并添加新的onClickList ...

  4. html单击按钮时弹出输入框,点击按钮弹出模态框的一系列操作代码实例

    实现功能 提交按钮功能: 点击提交按钮的时候都会弹出模态框,但是有不同的状态: 审核状态未通过:弹出未通过理由的input输入框,模态框中除了取消和确定按钮,新增确定并保存医院的按钮 审核状态已通过: ...

  5. ajax表格内容加按钮,单击按钮时,如何触发jquery数据表fnServerData通过AJAX更新表?...

    我正在将datatables插件与服务器端数据一起使用,并使用AJAX更新表. 我的dataTables设置如下所示: tblOrders = parameters.table.dataTable( ...

  6. php怎么代表不同行,php – 单击按钮时显示数据库的不同行

    我有一个清真寺数据库,包括以下字段:mosque_id,mosque_name,县,地址,邮政编码,网站,电子邮件1,电话1.我想做的是以一种形式显示第一座清真寺的信息(mosque_id = 1), ...

  7. java用按钮控制文本框隐藏与显示_编写JAVA程序,在其中有一个按钮和一个文本框。单击按钮时,文本框中显示按钮上显示的字。...

    展开全部 一e68a8462616964757a686964616f31333363373766 主要实现技术 Java图形化界面,较为常见的有awt, swing 和swt,  一般使用SWING来 ...

  8. python点击按钮改变图片_单击tkinter按钮时更改图片

    点击了python和一些按钮后,会产生一些颜色变化的按钮 当单击按钮时,是否可以更改按钮使用的.gif?我希望它在GPIO引脚关闭时显示ON,在GPIO引脚打开时显示off.在 目前我有:#BCM17 ...

  9. 三星生物与莫德纳签署疫苗生产协议;雅高启动新全球推广活动;ATT与探索公司组建全球媒体娱乐巨头 | 美通企业周刊...

    一周企业资讯看点:三星生物与莫德纳签署疫苗生产协议.雅高启动新全球推广活动.汉高将在上海张江成立新的粘合剂技术创新中心.3M启动上海结构胶国产化二期扩产项目.圣戈班集团在中国第54家生产基地于江苏扬州 ...

最新文章

  1. ASP.NET MVC 3中ViewBag, ViewData和 TempData
  2. 加码 2000 亿还不够,阿里云再建三座超级数据中心加速新基建
  3. JAVA设计模式初探之——装饰者模式
  4. $\LaTeX$笔记:Section 编号方式(数字、字母、罗马)计数器计数形式修改
  5. 【Python教程】用字典推导式将cookie字符串转化为字典的方法
  6. 如何在 SAP BTP 平台上重用另一个已经开发好的 service
  7. SAP 电商云 Spartacus UI Quick Order 主页的实现
  8. 提取地图中道路_逼疯谷歌地球!我用神器一键提取各种肌理,还能生成3D模型!...
  9. uni-app目录结构介绍
  10. 常用的密码破解方法大汇总 zz
  11. CNN 总结 模型归类
  12. android 的四种枚举Context.MODE_PRIVATE
  13. 危化品厂区监控人脸识别/危化品识别EasyGBS+智能分析网关设备助力化工厂区安全生产
  14. TS 对象可能为“未定义”,不能将类型“ XXXX | undefined “分配给类型{ xxxx }
  15. 五、传输层(一)传输层的功能
  16. php国际象棋棋盘,php趣味编程 - php输出国际象棋棋盘
  17. lstm预测股票_股票相关性与lstm预测误差
  18. 《驯服烂代码》第一章
  19. wps和office不显示Axmath和AxGraph插件
  20. demo 记录 通用方法什么的到这里抄一下

热门文章

  1. sqlyog通过跳板机ssh连接mysql数据库
  2. 每日英语:Three Shows That Changed The Way Networks Think About Viewership
  3. 在Ubuntu10.10下安装osd-lyrics
  4. hdu 1209 clocks wrong answer 我的错误代码(没审好题唉,角度一样后,还要按小时排序。...
  5. 5.5 用户定义的可调用类型
  6. 46.@弹出点击次数
  7. 通过PHP自带的$_SERVER判断 手机访问网站自动跳转到手机版
  8. Section 1.3 milk
  9. 《You can do it!》的chapter 2笔记
  10. Mysql报too many connections详解