私は最初の Android アプリをプログラミングしますが、Android 開発 (および Java) は初めてです。私は PreferenceActivity を持っていて、アクティビティが表示され、モバイルをオフにすると、その onCreate() がもう一度呼び出されることに気付きました。さらに紛らわしいのは、静的メンバーMyFirstAppActivity.camera
がもう存在しないため、例外が発生することです。そこにnullのチェックを入れることができますが、なぜこれが起こっているのだろうか、それを回避する最善の方法は何ですか?
public class SettingsActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Root
addPreferencesFromResource(R.xml.preferences);
// get list of available resolutions
Object[] previewSizes = MyFirstAppActivity.camera.getParameters()
.getSupportedPreviewSizes().toArray();
// split object properties into two arrays
String[] ps=new String[previewSizes.length];
for(int i=0;i<previewSizes.length;i++)
{
try
{
int width=((Size)previewSizes[i]).width;
int height=((Size)previewSizes[i]).height;
ps[i]=width+"x"+height;
}
catch(Exception ex)
{}
}
// get list of available resolutions
Object[] recordingSizes = MyFirstAppActivity.camera.getParameters()
.getSupportedPictureSizes().toArray();
// split object properties into two arrays
String[] rs=new String[recordingSizes.length];
for(int i=0;i<recordingSizes.length;i++)
{
try
{
int width=((Size)recordingSizes[i]).width;
int height=((Size)recordingSizes[i]).height;
rs[i]=width+"x"+height;
}
catch(Exception ex)
{}
}
Preference prefPreviewSizes = getPreferenceManager().findPreference("previewSizes");
Preference prefRecordingSizes = getPreferenceManager().findPreference("recordingSizes");
((ListPreference) prefPreviewSizes).setEntries(ps);
((ListPreference) prefRecordingSizes).setEntries(rs);
}
}