Android studio(创建、监听器intent菜单)
创建报错connect run out 可以查看这篇文章
1.自动创建
2.设置输出日志信息
logt+tab键之后会为当前的类自动生成一个TAG常量
关于日志过滤器
这时候在只有Log.v里面的消息,Log.d、i、w、e都没有出现。
当输入MainActivity的时候过滤到与其相关的
3.手动创建
选择No Activity
添加以下代码,以免下载东西过慢
我是直接中断,添加代码后再Sync一下
//解决下载慢问题 maven { url = uri("https://maven.aliyun.com/repository/public") } maven { url = uri("https://maven.aliyun.com/repository/google") }
创建后在app\src\main\java\com下面创建一个new->activity->Empty Activity
填入信息,不要选择Generate a Layout File(会自动给Activity创建一个对应的布局文件,会将FirstActivity设置为当前项目的主要活动)
在app\src\main\res下面创建一个layout目录
在layout里面创建一个layout Resource File文件,名为first_layout
添加按钮操作
加载布局,回到FirstActivity中,onCreate中加入以下代码
setContentView中传入布局文件的id
去到AndroidManifest.xml中进行注册,并添加主活动
4.给按钮增加监听器
public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //添加布局文件的id setContentView(R.layout.first_layout); //使用Toast方法 // 获取按钮实例 Button button1 = findViewById(R.id.Button_1); //为按钮注册监听器 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //Toast.LENGTH_SHORT用来设置显示时长 Toast.makeText(FirstActivity.this,"这是一个提示",Toast.LENGTH_SHORT).show(); } }); } }
5.菜单设置
在res里面新建目录 menu,在menu里面新建main菜单文件
去到FirstActivity里面编写相关代码,这里注意,新版as用switch会报错,要修改成if语句(可以将光标移到switch中按ALT+Enter快捷键直接转换成if语句)
//显示菜单 public boolean onCreateOptionsMenu(Menu menu) { //获取Inflater通过inflate方法创建菜单 getMenuInflater().inflate(R.menu.main,menu); //返回true表示允许显示菜单,false则菜单无法显示 return true; } public boolean onOptionsItemSelected(MenuItem item) { //得到点击的菜单的item 的id,给每个菜单项加入逻辑处理 int itemId = item.getItemId(); if (itemId == R.id.add_item) { Toast.makeText(this, "点击了添加菜单项", Toast.LENGTH_SHORT).show(); } else if (itemId == R.id.remobe_item) { Toast.makeText(this, "点击了删除菜单项", Toast.LENGTH_SHORT).show(); } return true; }
6.跳转到其他主活动(显式与隐式Intent)
6.1显式Intent
先新建一个活动,要选择Generate a Layout file,单不要选择Laucher Activity(这个会将其变为主要活动)
在second_activity的layout文件添加一个按钮,去Android Manifest里面看看是否注册了该活动
实现在FirstActivity中点击按钮,去到SecondActivity中
// 获取按钮实例 Button button1 = findViewById(R.id.Button_1); //为按钮注册监听器 button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //Toast.LENGTH_SHORT用来设置显示时长 // Toast.makeText(FirstActivity.this,"这是一个提示",Toast.LENGTH_SHORT).show(); //在FirstActivity的基础上打开SecondActivity Intent intent=new Intent(FirstActivity.this,SecondActivity.class); startActivity(intent); } });
6.2隐式Intent
字符串可以自定义,只要在manifest里面的action字符串相同即可。
//隐式intent Intent intent = new Intent("com.example.activitytest.ACTION_START"); startActivity(intent);
在AndroidManifest里面
<activity android:name=".SecondActivity" android:exported="false"> <intent-filter> <action android:name="com.example.activitytest.ACTION_START"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
通过隐式intent实现点击按钮能够打开Android的另一个程序
//隐式实现点击按钮,打开Android另一个程序 Intent intent = new Intent(Intent.ACTION_VIEW); //打开百度 // intent.setData(Uri.parse("http://www.baidu.com")); //去到拨号页面 intent.setData(Uri.parse("tel:10086")); startActivity(intent);
6.3通过intent传递数据
在FirstActivity按钮监听事件中
//intent传递数据 Intent intent=new Intent(FirstActivity.this,SecondActivity.class); String data = "Intent传递数据到第二个活动"; intent.putExtra("extra_data",data); startActivity(intent);
在SecondActivity中
//取出intent中传来的数据 Intent intent = getIntent(); String data = intent.getStringExtra("extra_data"); Log.d("SecondActivity",data);
启动后点击第一个页面按钮后