Activity之间相互跳转和传递数据(包括Button样式自定义、Check样式自定义和Activity添加Menu)

xiaoxiao2021-02-28  52

1.1 MainActivity.java代码如下,代码里面有大部分有注释说明了,应该还是很清楚的,欢迎大佬指教,小小白的同志们如果有什么不清楚的地方可以给我留言哦: [java] view plain copy print ? import android.content.Intent;  import android.net.Uri;  import android.os.Bundle;  import android.os.Handler;  import android.support.v7.app.AppCompatActivity;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.widget.Button;  import android.widget.CheckBox;  import android.widget.CompoundButton;  import android.widget.TextView;  import android.widget.Toast;    public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {        private String string = “Hello World!”;      private TextView mtv;      private Button mbt;      private CheckBox mche;      private TextView mtv2;      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate ( savedInstanceState );          setContentView ( R.layout.activity_main );          mtv = findViewById ( R.id.mtv);          mbt = findViewById ( R.id.mbt );          mche = findViewById ( R.id.mche );          mtv2 = findViewById ( R.id.mtv2 );          mtv.setOnClickListener ( new MytvOnClickLister () );          mbt.setOnClickListener ( new MybtOnClickLister () );          mche.setOnCheckedChangeListener(this);      }      @Override      //Check的点击执行函数      public void onCheckedChanged(CompoundButton compoundButton, boolean b) {          String desc = String.format(”我%s”,b?“被选中了”:“没被选中”);          compoundButton.setText(desc);      }      //TextView点击事件      class MytvOnClickLister implements View.OnClickListener {          @Override          public void onClick(View view) {              if (view.getId () == R.id.mtv) {                  Toast.makeText ( MainActivity.this“TextView点击”, Toast.LENGTH_SHORT ).show ();                  mtv.setText ( ”被玩坏了” );                  mbt.setText ( ”住手” );                  mche.setChecked ( true );                  mche.setText ( ”我被选中了” );                  //下面是一个延时程序,延时2s后执行ruu()函数                  new Handler ().postDelayed ( new Runnable () {                      public void run() {                          mtv.setText (string);                      }                  }, 2000 );              }          }      }      //Buton点击事件      class MybtOnClickLister implements View.OnClickListener {          @Override          public void onClick(View view) {              //按钮修改Check的选中状态              /*if (view.getId () == R.id.mbt) {                 Toast.makeText ( MainActivity.this, “button点击”, Toast.LENGTH_SHORT ).show ();                 mche.setChecked ( false );                 mche.setText ( ”我没被选中” );             }*/                //隐式Intent的用法:打开一个网页             /* Intent intent = new Intent ( Intent.ACTION_VIEW);             intent.setData ( Uri.parse ( “http://www.baidu.com” ) );             startActivity ( intent );*/                //隐式Intent的用法:打开电话              /*Intent intent = new Intent ( Intent.ACTION_DIAL);             intent.setData ( Uri.parse ( “tel:10086” ) );             startActivity ( intent );*/                //传递数据给SecondActivity             /* String s = ”我是被传递的数据”;             Intent intent = new Intent ( MainActivity.this,SecondActivity.class );             intent.putExtra ( “extra_data”,s );             startActivity ( intent );*/             //接收从SecondActivity返回的数据              Intent intent = new Intent ( MainActivity.this,SecondActivity.class );              startActivityForResult ( intent,1 );          }      }      //接收其他Activity传过来的数据第一个参数是判断是那个Activity传过来的,第二个参数是判断结果处理是否成功      protected void onActivityResult(int requestCode,int resultCode,Intent data){          switch (requestCode){              case 1:                  if (resultCode == RESULT_OK){                      mtv2.setText ( ”返回的随机数”+data.getStringExtra ( “return_data” ) );                  }                  break;              default:          }      }      //给Activity添加菜单      public boolean onCreateOptionsMenu(Menu menu){          getMenuInflater ().inflate ( R.menu.main,menu);          return true;      }      //实现菜单功能      public boolean onOptionsItemSelected(MenuItem item){          switch (item.getItemId ()){              case R.id.add_menu1:                  Toast.makeText ( this,“切换不了,放弃吧!”,Toast.LENGTH_SHORT ).show ();                  break;              case R.id.add_menu2:                  finish ();                  break;              default:          }          return true;      }  }   import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener { private String string = "Hello World!"; private TextView mtv; private Button mbt; private CheckBox mche; private TextView mtv2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate ( savedInstanceState ); setContentView ( R.layout.activity_main ); mtv = findViewById ( R.id.mtv); mbt = findViewById ( R.id.mbt ); mche = findViewById ( R.id.mche ); mtv2 = findViewById ( R.id.mtv2 ); mtv.setOnClickListener ( new MytvOnClickLister () ); mbt.setOnClickListener ( new MybtOnClickLister () ); mche.setOnCheckedChangeListener(this); } @Override //Check的点击执行函数 public void onCheckedChanged(CompoundButton compoundButton, boolean b) { String desc = String.format("我%s",b?"被选中了":"没被选中"); compoundButton.setText(desc); } //TextView点击事件 class MytvOnClickLister implements View.OnClickListener { @Override public void onClick(View view) { if (view.getId () == R.id.mtv) { Toast.makeText ( MainActivity.this, "TextView点击", Toast.LENGTH_SHORT ).show (); mtv.setText ( "被玩坏了" ); mbt.setText ( "住手" ); mche.setChecked ( true ); mche.setText ( "我被选中了" ); //下面是一个延时程序,延时2s后执行ruu()函数 new Handler ().postDelayed ( new Runnable () { public void run() { mtv.setText (string); } }, 2000 ); } } } //Buton点击事件 class MybtOnClickLister implements View.OnClickListener { @Override public void onClick(View view) { //按钮修改Check的选中状态 /*if (view.getId () == R.id.mbt) { Toast.makeText ( MainActivity.this, "button点击", Toast.LENGTH_SHORT ).show (); mche.setChecked ( false ); mche.setText ( "我没被选中" ); }*/ //隐式Intent的用法:打开一个网页 /* Intent intent = new Intent ( Intent.ACTION_VIEW); intent.setData ( Uri.parse ( "http://www.baidu.com" ) ); startActivity ( intent );*/ //隐式Intent的用法:打开电话 /*Intent intent = new Intent ( Intent.ACTION_DIAL); intent.setData ( Uri.parse ( "tel:10086" ) ); startActivity ( intent );*/ //传递数据给SecondActivity /* String s = "我是被传递的数据"; Intent intent = new Intent ( MainActivity.this,SecondActivity.class ); intent.putExtra ( "extra_data",s ); startActivity ( intent );*/ //接收从SecondActivity返回的数据 Intent intent = new Intent ( MainActivity.this,SecondActivity.class ); startActivityForResult ( intent,1 ); } } //接收其他Activity传过来的数据第一个参数是判断是那个Activity传过来的,第二个参数是判断结果处理是否成功 protected void onActivityResult(int requestCode,int resultCode,Intent data){ switch (requestCode){ case 1: if (resultCode == RESULT_OK){ mtv2.setText ( "返回的随机数"+data.getStringExtra ( "return_data" ) ); } break; default: } } //给Activity添加菜单 public boolean onCreateOptionsMenu(Menu menu){ getMenuInflater ().inflate ( R.menu.main,menu); return true; } //实现菜单功能 public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId ()){ case R.id.add_menu1: Toast.makeText ( this,"切换不了,放弃吧!",Toast.LENGTH_SHORT ).show (); break; case R.id.add_menu2: finish (); break; default: } return true; } }

1.2 MainActivity布局代码:

[html] view plain copy print ? <?xml version=“1.0” encoding=“utf-8”?>  <RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”      xmlns:tools=“http://schemas.android.com/tools”      android:layout_width=“match_parent”      android:layout_height=“match_parent”      tools:context=“com.example.lyp.myapplication.MainActivity”>        <TextView          android:id=“@+id/mtv”          android:layout_width=“wrap_content”          android:layout_height=“wrap_content”          android:text=“Hello World!”          android:background=“#c79898”          android:textSize=“30sp”          android:layout_marginTop=“20dp”          android:layout_centerHorizontal=“true”          />      <Button          android:id=“@+id/mbt”          android:layout_width=“wrap_content”          android:layout_height=“wrap_content”          android:layout_below=“@+id/mtv”          android:text=“button”          android:background=“@drawable/button”          android:layout_marginTop=“10dp”          android:textAllCaps=“false”          android:textSize=“25sp”          android:layout_centerHorizontal=“true”            />      <CheckBox          android:id=“@+id/mche”          android:layout_width=“wrap_content”          android:layout_height=“wrap_content”          android:layout_below=“@+id/mbt”          android:layout_marginTop=“10dp”          android:textColor=“#ff0008”          android:textSize=“15sp”          android:button=“@drawable/check”          android:text=“我没被选中!”          android:layout_marginLeft=“50dp”          android:layout_centerHorizontal=“true”          />      <TextView          android:id=“@+id/mtv2”          android:layout_width=“wrap_content”          android:layout_height=“wrap_content”          android:text=“别管我”          android:background=“#c79898”          android:textSize=“30sp”          android:layout_marginTop=“10dp”          android:layout_centerHorizontal=“true”          android:layout_below=“@+id/mche”          />  </RelativeLayout>   <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.lyp.myapplication.MainActivity"> <TextView android:id="@+id/mtv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:background="#c79898" android:textSize="30sp" android:layout_marginTop="20dp" android:layout_centerHorizontal="true" /> <Button android:id="@+id/mbt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/mtv" android:text="button" android:background="@drawable/button" android:layout_marginTop="10dp" android:textAllCaps="false" android:textSize="25sp" android:layout_centerHorizontal="true" /> <CheckBox android:id="@+id/mche" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/mbt" android:layout_marginTop="10dp" android:textColor="#ff0008" android:textSize="15sp" android:button="@drawable/check" android:text="我没被选中!" android:layout_marginLeft="50dp" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/mtv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="别管我" android:background="#c79898" android:textSize="30sp" android:layout_marginTop="10dp" android:layout_centerHorizontal="true" android:layout_below="@+id/mche" /> </RelativeLayout>

1.3 Button样式自定义(其实就是按下后会变个样子):

分别是:button、pressed和unpressed文件

[html] view plain copy print ? <?xml version=“1.0” encoding=“utf-8”?>  <selector xmlns:android=“http://schemas.android.com/apk/res/android”>      <item android:state_pressed=“true” android:drawable=“@drawable/pressed”/>      <item android:drawable=“@drawable/unpressed”/>  </selector>   <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/pressed"/> <item android:drawable="@drawable/unpressed"/> </selector> [html] view plain copy print ? <?xml version=“1.0” encoding=“utf-8”?>  <shape xmlns:android=“http://schemas.android.com/apk/res/android”>      <corners          android:radius=“5dp”          />      <stroke          android:color=“@color/colorPrimary”          android:width=“3dp”          />      <solid          android:color=“@color/colorAccent”/>  </shape>   <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="5dp" /> <stroke android:color="@color/colorPrimary" android:width="3dp" /> <solid android:color="@color/colorAccent"/> </shape> [html] view plain copy print ? <?xml version=“1.0” encoding=“utf-8”?>  <shape xmlns:android=“http://schemas.android.com/apk/res/android”>      <corners          android:radius=“5dp”          />      <stroke          android:color=“@color/colorAccent”          android:width=“3dp”          />      <solid          android:color=“@color/colorPrimary”/>  </shape>   <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="5dp" /> <stroke android:color="@color/colorAccent" android:width="3dp" /> <solid android:color="@color/colorPrimary"/> </shape>

1.4 Check样式自定义:

[html] view plain copy print ? <?xml version=“1.0” encoding=“utf-8”?>  <selector xmlns:android=“http://schemas.android.com/apk/res/android”>      <item android:state_checked=“true” android:drawable=“@drawable/check_choose”/>      <item android:drawable=“@drawable/check_unchoose”/>  </selector>   <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true" android:drawable="@drawable/check_choose"/> <item android:drawable="@drawable/check_unchoose"/> </selector>

这是自定义Check是用到的选中和未选中的素材:

1.5 Mainactivity截图:

说明:其中第一个控件没什么作用,我在其中就学到了和延时函数的使用,Button的作用是跳转到其他的Activity中,接着就是一个Check复选框按钮,我在TextView和Button的点击事件中的设置了Check的选中状态,所以当点击他们的时候Check的状态会变化。不过后面奖Buton设置成跳转到SecondActivity了。最后一个也是一个TextView,他的作用主要是显示从其他的Activity传过来的数据。这里我设置的是传过来一个随机数(Math.random()函数产生0到1的随机数。返回值是double型)。所以每次传的数据都是不一样的。

2.1 SecondActivity.java代码:

[java] view plain copy print ? import android.content.Intent;  import android.support.v7.app.AppCompatActivity;  import android.os.Bundle;  import android.view.View;  import android.widget.Button;  import android.widget.TextView;    public class SecondActivity extends AppCompatActivity {        private TextView second_mtv;      private Button  second_mbt;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate ( savedInstanceState );          setContentView ( R.layout.activity_second );          second_mtv = findViewById ( R.id.second_mtv );          second_mbt = findViewById ( R.id.second_mbt );            //接收来自MainActivity的数据          /*Intent intent = getIntent ();         second_mtv.setText ( intent.getStringExtra ( “extra_data” ) );         second_mtv.setTextSize ( 30 );*/            //返回数据到MainActivity          second_mbt.setOnClickListener ( new View.OnClickListener (){              @Override              public void onClick(View view){                  int i = (int)( Math.random()*100);//产生一个随机数                  Intent intent = new Intent (  );                  intent.putExtra ( ”return_data”,Double.toString ( i ));//将数据传输过去                  setResult ( RESULT_OK,intent );                  finish ();//销毁当前Activity              }          } );      }  }   import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class SecondActivity extends AppCompatActivity { private TextView second_mtv; private Button second_mbt; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate ( savedInstanceState ); setContentView ( R.layout.activity_second ); second_mtv = findViewById ( R.id.second_mtv ); second_mbt = findViewById ( R.id.second_mbt ); //接收来自MainActivity的数据 /*Intent intent = getIntent (); second_mtv.setText ( intent.getStringExtra ( "extra_data" ) ); second_mtv.setTextSize ( 30 );*/ //返回数据到MainActivity second_mbt.setOnClickListener ( new View.OnClickListener (){ @Override public void onClick(View view){ int i = (int)( Math.random()*100);//产生一个随机数 Intent intent = new Intent ( ); intent.putExtra ( "return_data",Double.toString ( i ));//将数据传输过去 setResult ( RESULT_OK,intent ); finish ();//销毁当前Activity } } ); } }

2.2 SecondActivity布局文件:

[html] view plain copy print ? <?xml version=“1.0” encoding=“utf-8”?>  <RelativeLayout xmlns:android=“http://schemas.android.com/apk/res/android”      xmlns:tools=“http://schemas.android.com/tools”      android:layout_width=“match_parent”      android:layout_height=“match_parent”      android:gravity=“center_horizontal”      tools:context=“com.example.lyp.myapplication.SecondActivity”>        <TextView          android:id=“@+id/second_mtv”          android:layout_width=“wrap_content”          android:layout_height=“wrap_content”          android:hint=“显示传递过来的数据”          android:layout_marginTop=“50dp”          />      <Button          android:id=“@+id/second_mbt”          android:layout_width=“wrap_content”          android:layout_height=“wrap_content”          android:layout_below=“@+id/second_mtv”          android:layout_marginTop=“20dp”          android:background=“@drawable/button”          android:text=“button”          android:textAllCaps=“false”          android:textSize=“20sp”          />  </RelativeLayout>   <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" tools:context="com.example.lyp.myapplication.SecondActivity"> <TextView android:id="@+id/second_mtv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="显示传递过来的数据" android:layout_marginTop="50dp" /> <Button android:id="@+id/second_mbt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/second_mtv" android:layout_marginTop="20dp" android:background="@drawable/button" android:text="button" android:textAllCaps="false" android:textSize="20sp" /> </RelativeLayout>

源代码下载

</div>
转载请注明原文地址: https://www.6miu.com/read-2614131.html

最新回复(0)