关于接口在android单选按钮下的实现

从接口的定义方面来说,接口其实就是类和类之间的一种协定,一种约束.拿一个例子来说.所有继承了一个接口的类中必需实现接口定义的方法.那么从用户(使用类的用户)的角度来说,如果他知道了某个类是继承于这个接口,那么他就可以放心大胆的调用接口中的方法,而不用管方法怎么具体实现。

用接口目的是方便统一管理.另一个是方便调用.当然了,不使用接口一样可以达到目的.只不过这样的话,这种约束就不那么明显,如果这样类还有Duck类等等,比较多的时候难免有人会漏掉这样方法.所以说还是通过接口更可靠一些,约束力更强一些.

 

 下面用一个安卓的例子来实现接口

这是一个关于回家方案选择的一个接口

 

package com.example.gohome;public interface ToHome {public String goHome();}

 下面是 接口的实现

package com.example.gohome;public class ByBus implements ToHome {@Overridepublic String goHome() {return "time = 24min ; money = 0.4";}}

 

package com.example.gohome;public class ByAirplane implements ToHome {@Overridepublic String goHome() {return "time = 5min ; money = 998";}}

 还有 2种差不多 就不例举了。

 

 

然后我们看下如何定义安卓的单选按钮

 

<LinearLayout 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:orientation="vertical"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><TextViewandroid:id="@+id/TextView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world" /><RadioGroup android:id="@+id/RadioGroup01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"android:layout_x="3dp"android:layout_y="54dp"><RadioButton android:id="@+id/RadioButton1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/RadioButton1"/>   <RadioButton android:id="@+id/RadioButton2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/RadioButton2"/>   <RadioButton android:id="@+id/RadioButton3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/RadioButton3"/>   <RadioButton android:id="@+id/RadioButton4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/RadioButton4"/>   </RadioGroup></LinearLayout>

 

    关于单选按钮这个会在下篇博客中具体说明,先了解下如何定义

   

    最后看下如何使用接口定义的类

package com.example.gohome;import java.security.PublicKey;import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends Activity {static ToHome mytohome;TextView m_TextView;RadioGroup m_RadioGroup;RadioButton m_Radio1,m_Radio2,m_Radio3,m_Radio4;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);m_TextView = (TextView)findViewById(R.id.TextView1);m_RadioGroup = (RadioGroup)findViewById(R.id.RadioGroup01);m_Radio1 = (RadioButton)findViewById(R.id.RadioButton1);m_Radio2 = (RadioButton)findViewById(R.id.RadioButton2);m_Radio3 = (RadioButton)findViewById(R.id.RadioButton3);m_Radio4 = (RadioButton)findViewById(R.id.RadioButton4);m_RadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener(){@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {if(checkedId == m_Radio1.getId()){mytohome = new ByFoot();System.out.println(mytohome.goHome());DisplayToast(mytohome.goHome());}if(checkedId == m_Radio2.getId()){mytohome = new ByBus();System.out.println(mytohome.goHome());DisplayToast(mytohome.goHome());}if(checkedId == m_Radio3.getId()){mytohome = new BySubway();System.out.println(mytohome.goHome());DisplayToast(mytohome.goHome());}if(checkedId == m_Radio4.getId()){mytohome = new ByAirplane();System.out.println(mytohome.goHome());DisplayToast(mytohome.goHome());}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}private void DisplayToast(String str) {Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT);toast.setGravity(Gravity.TOP,0,220);toast.show();}
}