2019-03-29 安卓作业:实现菜单栏并每项跳转页面
2019-03-29 本文已影响0人
Daniel梁
题目:设计一个具有3个选项的菜单程序,当单击每个选项时分别跳转到3个不同的页面
思路:
- 使用OptionMenus在MainActivity中实现菜单栏,我们在那里可以重写 onCreateOptionsMenu(Menu menu)显示菜单,再用onOptionsItemSelected(MenuItem item)去监听按钮点击。
注意:有些模拟机由于SDK过新,我们要显示Menu菜单怎么办呢?
1 : 我们可以去AndroidMainfext.xml里面的
<uses-sdk
android:minSdkVersion="15"
android:targetSdkVersion="28"
/>
修改targetSdkVersion,这个是项目创建的时候构建的。。修改代价比较大
2 : 我们可以添加一个按钮,用这个按钮去手动显示系统的menu菜单,手动调用 openOptionsMenu()去让他显示
- 由于我们要实现页面跳转及传值,需要使用Intent和Bundle结合去完成这个功能!
下面看代码
MainActivity 的 Java
package com.example.switchbetweenthree;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.showMenuBtn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openOptionsMenu();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(1,1,1,"菜单项一");
menu.add(1,2,2,"菜单项二");
menu.add(1,3,3,"菜单项三");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case 1:
jump(item.getTitle().toString());
break;
case 2:
jump(item.getTitle().toString());
break;
case 3:
jump(item.getTitle().toString());
break;
default:
return super.onOptionsItemSelected(item);
}
return true;
}
public void jump(String value){
Intent intent = new Intent();
intent.setClass(MainActivity.this,SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putString("text",value);
intent.putExtras(bundle);
startActivity(intent);
}
}
Main的XML
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
>
<Button
android:id="@+id/showMenuBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="显示菜单"
android:textSize="40sp"
/>
</RelativeLayout>
</android.support.constraint.ConstraintLayout>
Second的Java
package com.example.switchbetweenthree;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class SecondActivity extends Activity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
textView = findViewById(R.id.text);
Bundle bundle = this.getIntent().getExtras();
String str = bundle.getString("text");
textView.setText(str);
Button back = findViewById(R.id.back);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(SecondActivity.this,MainActivity.class);
startActivityForResult(intent,0);
}
});
}
}
Second的XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40sp"
android:layout_gravity="center"
/>
<Button
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:text="返回"
android:textSize="40sp"
/>
</LinearLayout>
由于我们要使用Intent监听跳转,我们要在AndroidMainfext.xml添加跳转关联
在Application下面添加以下代码
<activity android:name=".SecondActivity">
</activity>
下面是demo图
屏幕快照 2019-03-29 上午9.02.56.png
屏幕快照 2019-03-29 上午9.03.08.png
屏幕快照 2019-03-29 上午9.03.15.png
Done~