【发布时间】:2022-02-10 19:07:32
【问题描述】:
我尝试在我的手机和 AVD 中执行此代码,但不幸的是应用程序 tp2 已停止,但 gradle 构建完成且没有错误。 有人可以帮我吗?
public class MainActivity extends Activity {
Spinner spinner;
EditText field;
Button addBtn,UpdateBtn,clearBtn;
ArrayAdapter<String> adapter;
ArrayList<String> films = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner= (Spinner) findViewById(R.id.spinner1);
field = findViewById(R.id.field);
addBtn= (Button) findViewById(R.id.addbtn);
UpdateBtn= (Button) findViewById(R.id.updatebtn);
clearBtn= (Button) findViewById(R.id.clearbtn);
//ADAPTER
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_single_choice,films);
spinner.setAdapter(adapter);
spinner.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
field.setText(films.get(i));
}
});
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
add();
}
});clearBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
delete();
}
});
UpdateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
update();
}
});
}
//methods
private void add(){
String film=field.getText().toString();
if(!film.isEmpty() && film.length() >0){
adapter.add(film);
adapter.notifyDataSetChanged();
field.setText("");
Toast.makeText(getApplicationContext()," Ajoute" + film, Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getApplicationContext(), "Rien a ajouter", Toast.LENGTH_SHORT).show();
}
}
private void update() {
String film = field.getText().toString();
int pos = spinner.getSelectedItemPosition();
if (!film.isEmpty() && film.length() > 0) {
adapter.remove(films.get(pos));
adapter.insert(film,pos);
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext()," Modifie" + film, Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getApplicationContext()," Pas Modifie" + film, Toast.LENGTH_SHORT).show();
}
}
private void delete(){
int pos = spinner.getSelectedItemPosition();
if(pos > -1){
adapter.remove(films.get(pos));
adapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext()," Supprime" , Toast.LENGTH_SHORT).show();
field.setText("");
}
else{
Toast.makeText(getApplicationContext()," Rien a supprimer" , Toast.LENGTH_SHORT).show();
}
}
}
它似乎在工作,但实际上它崩溃了。活动崩溃,我无法找出原因,因为没有显示其他 (id)。抱歉英语不好
【问题讨论】:
-
您在 Logcat 中得到什么错误信息?
-
您需要更多的空检查,并且您可能可以将您的类成员声明为 final,因为它们是在 onCreate 中初始化的。
-
检查我的答案。总是尝试发布错误日志@Ahmed
-
别忘了标记我的答案@Ahmed