在我的应用中,我有一个用户点击的表单"添加"然后用户填写表格。 (每次用户选择"添加"
时,表单都是相同的我想要的是拥有一个"工作号码"每次创建新表单时都会增加。
我无法使用此功能,并尝试了几乎所有我可以在此处和Google中找到的解决方案。
这是我的代码:
这在我的CreateOrEditForm.java类
中EditText jobnumberEditText;
String newKey;
int code = 0;
.....
jobnumberEditText = (EditText) findViewById(R.id.editTextJobnumber);
if(code <= 0){
code = 1;
}else{
code++;
}
newKey = "000" + code;
jobnumberEditText.setText("000" + code);
和我的MainForm.java类
Button button = (Button) findViewById(R.id.addNew);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(JobCardMainActivity.this, CreateOrEditJobCards.class);
intent.putExtra(KEY_EXTRA_CONTACT_ID, 0);
startActivity(intent);
}
});
现在发生的事情是,当用户点击添加时,数字不会增加并保持在1
有人可以帮忙吗?
提前致谢。
修改
该应用包含所创建的各种表单的列表视图,其下方包含&#34; add&#34;按钮
jobnumberEditText.setText(getIntent().getStringExtra("counter"));
在上一课:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(JobCardMainActivity.this, CreateOrEditJobCards.class);
intent.putExtra(KEY_EXTRA_CONTACT_ID, 0);
count++;
intent.putExtra("counter", count);
startActivity(intent);
}
});
编辑2
我找到了一个让它递增的解决方案,但是当我点击列表视图中的表单删除时,它也会计算。例如,当我点击&#34;添加&#34;创建表单它给了我一些0001我然后保存表单。当我进入该表单删除它并创建一个新的数字将是0003而不是0002。
请参阅以下代码:
SharedPreferences sp = getSharedPreferences("key_code", MODE_PRIVATE);
int code = sp.getInt("code",0);
if(code <= 0){
code = 1;
}else{
code++;
}
sp.edit().putInt("code",code).commit();
newKey = "000" + code;
Button button = (Button) findViewById(R.id.addNew);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(JobCardMainActivity.this, CreateOrEditJobCards.class);
intent.putExtra(KEY_EXTRA_CONTACT_ID, 0);
intent.putExtra("000",newKey);
startActivity(intent);
}
});
然后在我的另一堂课:
jobnumberEditText = (EditText) findViewById(R.id.editTextJobnumber);
jobnumberEditText.setText(getIntent().getStringExtra("000"));
答案 0 :(得分:2)
当用户点击按钮时总是需要增加数字,所以在侦听器中移动代码,否则code
将在oncreate
中增加一次并保持不变
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
incrementCountAndDisplay();
Intent intent = new Intent(JobCardMainActivity.this, CreateOrEditJobCards.class);
intent.putExtra(KEY_EXTRA_CONTACT_ID, 0);
//intent.putExtra("counter", newKey);
intent.putExtra("counter", String.ValueOf(count));
startActivity(intent);
}
});
// separate function for code clarity
void incrementCountAndDisplay(){
code++;
newKey = "000" + code;
jobnumberEditText.setText(newKey); // use newKey
}
修改:您需要使用String
密钥发送int
而不是counter
,因此在将数据放入String.ValueOf(count)
时使用intent
或者您可以获取int
使用getIntExtra
但最终需要一个字符串,因此传递一个字符串
答案 1 :(得分:0)
Button button = (Button) findViewById(R.id.addNew);
int count =0;
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(JobCardMainActivity.this, CreateOrEditJobCards.class);
count++;
intent.putExtra(KEY_EXTRA_CONTACT_ID, count);
startActivity(intent);
}
});
当你收到这些数据时:
EditText jobnumberEditText;
String newKey;
// you can also use your already defined intent
int code = getIntent().getStringExtra(KEY_EXTRA_CONTACT_ID);
.....
jobnumberEditText = (EditText) findViewById(R.id.editTextJobnumber);
newKey = "000" + code;
jobnumberEditText.setText("000" + code);