我是Java和Android的初學者,請大家幫忙。我想把Alert Dialog放到一個片段中,但我最終將大部分代碼複製到了下面的類中,因此兩個類包含幾乎相同的代碼。你能告訴我如何分離代碼而不在Fragment類中複製大部分代碼?如何在片段中顯示AlertDialog
謝謝!
public class MainActivity extends Activity {
private int mInterval = 1000;
private Handler mHandler;
TextView textView;
boolean mStarted;
final static String simple_Date_Format = "HH:mm:ss SSS";
public void updateStatus() {
long currentTimeMillis = System.currentTimeMillis();
Date date = new Date(currentTimeMillis);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(simple_Date_Format);
String time_now = simpleDateFormat.format(date.getTime());
textView.setText(time_now);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
long currentTimeMillis = System.currentTimeMillis();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(currentTimeMillis);
Date date = new Date(currentTimeMillis);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(simple_Date_Format);
String time_now = simpleDateFormat.format(date.getTime());
textView = (TextView) findViewById(R.id.textview);
textView.setText(time_now);
mHandler = new Handler();
startRepeatingTask();
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
MainActivity.this);
if (mStarted) {
alertDialogBuilder.setTitle(R.string.settings);
alertDialogBuilder.setMessage(R.string.stop_message);
} else {
alertDialogBuilder.setTitle(R.string.settings);
alertDialogBuilder.setMessage(R.string.restart_message);
}
alertDialogBuilder.setPositiveButton(R.string.click_me,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (!mStarted) {
startRepeatingTask();
} else {
stopRepeatingTask();
}
}
});
alertDialogBuilder.setCancelable(true);
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
}
});
}
Runnable mStatusChecker = new Runnable() {
@Override
public void run() {
updateStatus(); // this function can change value of mInterval.
mHandler.postDelayed(mStatusChecker, mInterval);
}
};
void startRepeatingTask() {
mStatusChecker.run();
mStarted = true;
}
void stopRepeatingTask() {
mHandler.removeCallbacks(mStatusChecker);
mStarted = false;
}
對不起,我正在擴展FragmentActivity – user4799681
您能否給我更多的信息? 是否要僅在Fragment中顯示AlertDialog? –
你的意思是通過避免重複使用相同的代碼來在兩個片段中顯示對話框? –