インターフェイスのボタンをクリックしてアプリケーションから Web ブラウザーを開こうとすると、クラッシュを引き起こすコードの下
MainTest.java
package com.heeere.androiddnssd.discovery;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainTest extends Activity {
private Discovery discovery;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ( savedInstanceState == null)
discovery = new Discovery(this);
else
discovery = (Discovery) savedInstanceState.getSerializable("discovery");
setContentView(R.layout.main);
Button b = (Button)this.findViewById(R.id.button);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);
}
});
}
@Override
protected void onSaveInstanceState(final Bundle outState) {
outState.putSerializable("discovery", discovery);
super.onSaveInstanceState(outState);
}
}
Discovery.java
package com.heeere.androiddnssd.discovery;
import java.io.Serializable;
public class Discovery implements Serializable {
private static final long serialVersionUID = 637576886455091135L;
private MainTest maintest;
//android.os.Handler handler = new android.os.Handler();
public Discovery (MainTest maintest) {
this.maintest = maintest;
}
}
ここで、Discovery のコンストラクターから MainTest Class 型を削除すると、バグは消えます。それがクラッシュの原因です。
Discovery のコンストラクターから MainTest クラス タイプを削除せずにこの問題を解決するにはどうすればよいですか?