Tôi mới sử dụng Java và cố gắng tạo hoạt động bằng EditText. Khi tạo, nó tải với ngày hiện tại và khi người dùng chọn EditText, nó sẽ hiển thị DatePicker. Khi người dùng chọn ngày, tôi cần đưa kết quả vào EditText. Tuy nhiên, tôi hiện đang nhận được lỗi sau:Lỗi: "Không thể tạo tham chiếu tĩnh đến phương thức không tĩnh findViewById (int) từ loại Hoạt động"
Cannot make a static reference to the non-static method findViewById(int) from the type Activity
Tôi biết rằng tôi không thể tham chiếu tĩnh đến phương pháp không tĩnh. Tôi đã cố gắng để loại bỏ tất cả các tài liệu tham khảo tĩnh, nhưng điều này đã cho tôi các lỗi khác. Mã của tôi là dưới đây.
Bạn có thể giúp tôi một số mã mẫu về cách tôi có thể thực hiện công việc này không? Lỗi là ở nơi khi tôi cố gắng đưa kết quả vào EditText.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Get Current Date and assign to EditText Begin
Calendar c = Calendar.getInstance();
System.out.println("Current time => " + c.getTime());
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy", Locale.US);
String formattedDate = df.format(c.getTime());
EditText ShowDate = (EditText) findViewById(R.id.editTextToShowDate);
ShowDate.setText(formattedDate);
//Get Current Date and assign to EditText End
}
//Date Picker Start
@TargetApi(Build.VERSION_CODES.HONEYCOMB) public void showDatePickerDialog(View v) {
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB) public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
// Do something with the date chosen by the user
String sToDate = createStringFromDateElements(year, month, day);
EditText ShowDate = (EditText) findViewById(R.id.editTextToShowDate); //I get the error here
ShowDate.setText(sToDate);
}
private String createStringFromDateElements(int year, int month, int day) {
// TODO Auto-generated method stub
return null;
}
}
//Date Picker End
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Khi bạn mới sử dụng java, hãy dành chút thời gian tìm hiểu java rồi bước vào android. Android là một siêu của java. – NewUser
Hãy thử câu trả lời của tôi nó sẽ làm việc – Pragnani
bạn chỉ cần làm cho lớp DatePickerFragment của bạn không tĩnh nên nó được bao gồm trong phạm vi trường hợp MainActivity. – njzk2