Androidアプリケーションは複数のactivityを開発してプログラムを完全に終了する方法
以前、複数のactivityの脱退を学ぶのはいつも面倒だったが、実際にネット上で考えたほうが良い脱退方式はActivityのベースクラスを作成することであり、他のActicityはこのベースクラスを継承している.使用する放送を終了し、終了する必要がある場所で放送を送信する.この放送はベースクラスで受信.そしてfinish()は、これでいいです.Activityごとにコードを書く必要はありません.ベースクラスを作成するメリットはまだたくさんあります.ベース+ラジオはいろいろなことができます.直接コードを入力しました:
ベースクラスBaseActivity:
Activity02:
ベースクラスBaseActivity:
public class BaseActivity extends Activity {
public Activity aty;
public ExitAllBroadCast exitAllBroadCast;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
aty = BaseActivity.this;
exitAllBroadCast = new ExitAllBroadCast();
}
/* (non-Javadoc)
* @see android.app.Activity#onStart()
*/
@Override
protected void onStart() {
IntentFilter filter = new IntentFilter();// IntentFilter
filter.addAction("com.kg.exit.broadcast");
registerReceiver(exitAllBroadCast, filter);// Broadcast Receiver
super.onStart();
}
class ExitAllBroadCast extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
aty.finish();
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(exitAllBroadCast);
}
}
サブクラスActivity 01public class Activity01 extends BaseActivity {
private TextView tx;
private Button btn;
private Context ctx;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ctx = this;
tx = (TextView) findViewById(R.id.tx);
tx.setText("activity01");
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(ctx, Activity02.class);
startActivity(intent);
}
});
}
}
サブクラスActivity02:
public class Activity02 extends BaseActivity {
public static final int MENU_EXITAPPLICATION = Menu.FIRST;
private TextView tx;
private Button btn;
private Context ctx;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ctx = this;
tx = (TextView) findViewById(R.id.tx);
tx.setText("activity02");
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(ctx, Activity01.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_EXITAPPLICATION, 0," ");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == MENU_EXITAPPLICATION){
Intent myIntent = new Intent();// Intent
myIntent.setAction("com.kg.exit.broadcast");
sendBroadcast(myIntent);//
}
return super.onOptionsItemSelected(item);
}
}
ソースアドレス:http://download.csdn.net/detail/kingsonl/4309569