2017-10-27 16 views
-1

私のアプリでは、ユーザーが「追加」をクリックした後、ユーザーがフォームに記入するフォームがあります。 (フォームは、ユーザーが私が達成したい何ボタンのクリック数を増やす方法は?

を「追加」を選択するたびに新しいフォームが作成されるたびに増加し、「ジョブ番号」を持つことである同じである。

私はできませんこの作業を取得し、私はここや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

のまま?

ありがとうございます。

EDIT

はアプリが作成した様々な形式のリストビューが含まれており、下に "追加" ボタン

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); 

     } 
    }); 

をEDIT 2

私はそれを増やすための解決策を見つけましたが、削除するためにリストビューのフォームをタップすると、それも同様にカウントされます。たとえば、フォームを作成するために「追加」をタップすると、0001の番号が与えられ、フォームを保存します。私はそれを削除し、番号のための新しいを作成するためにそのフォームに入ると0003の0002 isteadされます。

以下のコードを参照してください。

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")); 

答えて

2

あなたは、ユーザーがボタンをクリックしたときに、常に数をインクリメントする必要があるので、それ以外の場合はcodeをリスナー内のコードを移動oncreateで1回インクリメントされ、同じままです

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 
}   

編集:あなたはcounterキーでStringの代わりintを送信する必要があるので、intentにデータを入れながらString.ValueOf(count)を使用するか、getIntExtraを使用してintを取得することができますが、最終的にあなたが文字列を必要とするので、文字列を渡す

+0

こんにちは、それは動作しません。私は一種の解決策を見つけました。編集した質問をご覧ください。ありがとう – Newbie

+0

@Newbie 'Edit'で作業しているはずですが、あなたがインクリメンタルに質問を投稿し、' count'を表示して再起動しても保存しないようにする必要があります。 '1 tip' 'onStop'あなたは毎回クリックする度にそれをする必要はありません –

+0

ありがとう、しかし私はあなたが言っていることにかなり従っていませんか? – Newbie

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); 
+0

ありがとうございますが、現在私のedittextフィールドに番号が表示されていません。更新された質問をご覧ください。 – Newbie

+0

私の答えが更新されました)もう一度やり直してください) –

関連する問題