01/10/2018, 11:23

Hỏi về cách xử lý activity trong android

Hiện tại mình đang bị bug kia, cơ mà lại không biết search google như thế nào với nó.
Lỗi cụ thể như sau: Mình đang ở Main_Activity —> Bấm button —> Activity_2 —> Bấm button —> Main_Activity.
Ở Main_Activity là mình hiển thị danh sách các item, còn Activity_2 là dùng để thêm 1 item mới vào danh sách đó.
Mọi thứ đều hoạt động tốt cho đến khi mình bấm nút back, thì nó quay lại thẳng Activity_2, những Edittext đều giữ y nguyên không thay đổi gì, bấm thêm lần nữa là quay lại danh sách lúc chưa thêm item kia vào luôn.

Edit1:
Main_Activity.java (Tên mang tính tượng trưng)

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View rootView = inflater.inflate(R.layout.fragment_quanlyvideo,container,false);
        listVideo = rootView.findViewById(R.id.video_list_item);
        addVideo = rootView.findViewById(R.id.float_button_add_video);
        luuY = rootView.findViewById(R.id.luuY_video_list_item);


        addVideo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i = new Intent(getActivity(), AddVideoActivity.class);
                startActivity(i);
            }
        });
}

Activity_2.java (Tên mang tính tượng trưng)

public class AddVideoActivity extends AppCompatActivity {

    private EditText maVideo, tenVideo, soLuong, gia;
    private Button buttonThem;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_video);

        maVideo = findViewById(R.id.editTextMaVideo_Add_Video);
        tenVideo = findViewById(R.id.editTextTen_Add_Video);
        soLuong = findViewById(R.id.editTextSoLuong_Add_Video);
        gia = findViewById(R.id.editTextGia_Add_Video);
        buttonThem = findViewById(R.id.buttonThem_Video);

        buttonThem.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(checkInput()){
                    DatabaseHandler dh = new DatabaseHandler(view.getContext());
                    Video vd = new Video();
                    vd.setId(maVideo.getText().toString());
                    vd.setTen(tenVideo.getText().toString());
                    vd.setSoLuong(Integer.parseInt(soLuong.getText().toString()));
                    vd.setGia(Integer.parseInt(gia.getText().toString()));

                    dh.addVideo(vd);
                    dh.close();
                    Intent i = new Intent(getApplicationContext(), Homepage.class);
                    i.putExtra("job",1);
                    startActivity(i);
                }
            }
        });
    }
Tynk Huynk viết 13:26 ngày 01/10/2018

Talk is cheap, show me your code

Hung viết 13:25 ngày 01/10/2018

Xem lại các Activity Callback nha bạn.

Bên iOS có hàm viewDidLoad gọi 1 lần khi tạo, tương tự onCreate bên Android. iOS có viewWillAppear, gọi mỗi lần controller được active, bạn tìm callback tương tự bên Android. Bạn chỉ cần viết code cập nhật giao diện trong viewWillAppear là hết lỗi back button

Thời Nguyễn viết 13:36 ngày 01/10/2018

Hiện tại mình đang bị bug kia, cơ mà lại không biết search google như thế nào với nó.
Lỗi cụ thể như sau: Mình đang ở Main_Activity —> Bấm button —> Activity_2 —> Bấm button —> Main_Activity.
Ở Main_Activity là mình hiển thị danh sách các item, còn Activity_2 là dùng để thêm 1 item mới vào danh sách đó.
Mọi thứ đều hoạt động tốt cho đến khi mình bấm nút back, thì nó quay lại thẳng Activity_2, những Edittext đều giữ y nguyên không thay đổi gì, bấm thêm lần nữa là quay lại danh sách lúc chưa thêm item kia vào luôn.

Show code ra đây xem nào

Liêu Mạnh viết 13:34 ngày 01/10/2018

Mình đã up code lên rồi, mọi người giúp mình với.

Quân viết 13:29 ngày 01/10/2018

yêu cầu bạn đặt đúng tên, không cần tượng trưng gì hết vì code của bạn không đồng bộ với cái tên tượng trưng của bạn

Tynk Huynk viết 13:35 ngày 01/10/2018

DatabaseHandler dh = new DatabaseHandler(view.getContext());

Còn thằng cờ hó này nữa bạn ơi, code của nó đâu ? [quote=“Manh_Lieu, post:1, topic:53772”]
dh.addVideo(vd);
dh.close();
[/quote]

Bạn debug xem có add thành công chưa ?

Trương Phan Bình viết 13:30 ngày 01/10/2018

Từ ActivityA bạn nên sử dụng startActivityForResult nha, sau đó, khi bấm button ở Activity2 thì setResult về cho nó là được nha, chứ đừng start một Activity mới vào lúc này.

Bài liên quan
0