Экран входа в систему - просмотр Recycler - отключить службу, когда устройство переходит в спящий режим

Я пытаюсь создать приложение с двумя экранами: MainActivity (логин) и CustomerInfoActivity.

  • Экран входа с.

  • Другой экран используется для отображения информации о клиенте (имя, телефон, изображение), отображаемой в представлении переработчика, и текстового представления для отображения обновления местоположения.

  • Использование широковещательного приемника и перехват события, когда устройство переходит в спящий режим/пробуждение => отключает/включает службу.

У меня происходит сбой приложения, когда я нажимаю кнопку «Войти», чтобы перейти к экрану просмотра «Переработка», и я понятия не имею, как справиться с требованием отключения службы.

Пожалуйста, помогите мне. Спасибо.

DataCustomer.java

public class DataCustomer {
private int image;
private String name;
private int phonenumber;

public DataCustomer(String name, int phonenumber, int image) {
    this.image = image;
    this.name = name;
    this.phonenumber = phonenumber;
}

public int getImage() {
    return image;
}

public void setImage(int image) {
    this.image = image;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getPhonenumber() {
    return phonenumber;
}

public void setPhonenumber(int phonenumber) {
    this.phonenumber = phonenumber;
}}

CustomerAdapter.java

public class CustomerAdapter extends RecyclerView.Adapter<CustomerAdapter.ViewHolder> {
private ArrayList<DataCustomer> dataCustomers;
private Context context;

public CustomerAdapter(ArrayList<DataCustomer> dataCustomers, Context context) {
    this.dataCustomers = dataCustomers;
    this.context = context;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
    View itemView = layoutInflater.inflate(R.layout.item_customer,parent,false);
    return new ViewHolder(itemView);
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    holder.customer_name.setText(dataCustomers.get(position).getName());
    holder.customer_phone.setText(dataCustomers.get(position).getPhonenumber());
    holder.customer_image.setImageResource(dataCustomers.get(position).getImage());

}

@Override
public int getItemCount() {
    return dataCustomers.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{
    TextView customer_name;
    TextView customer_phone;
    ImageView customer_image;

    public ViewHolder(View itemView){
        super(itemView);
        customer_name = (TextView)itemView.findViewById(R.id.customer_name);
        customer_phone = (TextView) itemView.findViewById(R.id.customer_phone);
        customer_image = (ImageView)itemView.findViewById(R.id.customer_image);

    }
}}

CustomerInfoActivity.java

public class CustomerInfoActivity extends AppCompatActivity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.customer_info);
    initView();
}
public void initView(){
    RecyclerView recyclerView = (RecyclerView)findViewById(R.id.customer_items);
    recyclerView.setHasFixedSize(true);

    LinearLayoutManager layoutManager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false);
    recyclerView.setLayoutManager(layoutManager);
    ArrayList<DataCustomer> arrayList = new ArrayList<>();

    arrayList.add(new DataCustomer("A",12,R.drawable.A));
    arrayList.add(new DataCustomer("B",34,R.drawable.B));
    arrayList.add(new DataCustomer("C",56,R.drawable.C));
    arrayList.add(new DataCustomer("D",78,R.drawable.D));

    CustomerAdapter customerAdapter = new CustomerAdapter(arrayList, getApplicationContext());
    recyclerView.setAdapter(customerAdapter);
}}

MainActivity.java

public class MainActivity extends AppCompatActivity {
private static EditText username;
private static EditText password;
private static CheckBox rememberpassword;
private static Button loginbutton;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    loginButton();

}
public void loginButton(){
    username = (EditText)findViewById(R.id.editText_username);
    password = (EditText)findViewById(R.id.editText_password);
    rememberpassword = (CheckBox)findViewById(R.id.checkBox_rememberpassword);
    loginbutton = (Button)findViewById(R.id.button_login);

    loginbutton.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(username.getText().toString().equals("user") &&
                            password.getText().toString().equals("pass")  ) {

                        Intent intent = new Intent("com.assignment.assignment2_v2.CustomerInfoActivity");
                        startActivity(intent);
                    }
                }
            }
    );
}
}



Ответы (1)


Сбой, вероятно, можно было бы исправить, переключив неявный Intent на явный:

Intent intent = new Intent(MainActivity.this, CustomerInfoActivity.class);
startActivity(intent);

Попробуй это. Также не могли бы вы добавить свои журналы сбоев, если это не поможет?

person dniHze    schedule 19.04.2018
comment
Спасибо за ваш ответ! Я пробовал, но проблема в этом случае не в намерении, а в моем переменном телефонном номере в DataCustomer, я изменил с int на String, и это сработало. - person le9; 19.04.2018
comment
@ le9 рад, что вы нашли правильное решение для вашего сбоя. Кроме того, вам все еще нужна помощь с контролем над сервисом? - person dniHze; 20.04.2018
comment
да, я все еще работаю над этим, было бы так приятно узнать ваше решение. - person le9; 22.04.2018