私と非常によく似た質問をたくさん見ましたが、何も機能していないようです。以前に回答があった場合は申し訳ありません。
私が持っているのは、自分で煙草を巻いたときにどれだけのお金を節約できるかを示す電卓付きのアプリです。電卓には、入力用の一連の編集テキスト ボックスがあります。現在、タバコ 1 パックに支払っている金額、州の税金、1 日あたりの喫煙本数、タバコ 1 袋のコスト、チューブのコスト。計算を押すと、既製のタバコと自分で巻くタバコに現在いくら払っているかがわかります。
嘘の問題は、たばこのさまざまなサイズの袋がたくさんあることです。そこで私が開発したのは、適切な金額に対していくら支払うかを計算するためのワークシートです。たとえば、16 オンスのバッグを購入した場合、計算が正しく行われないため、同じ製品の 6 オンスのバッグにいくら支払うかがワークシートに表示されます。
そのため、ワークシートからその新しい価格を取得して電卓アクティビティに配置する方法がわかりません。私が読んだことから、 getText と setText はアクティビティ間では機能しません。また、現在のアクティビティから putExtras を配置し、移動先のアクティビティで getExtras を使用するインテント メソッドも見ました。しかし、私が見たすべての例では、新しいアクティビティを開始する必要があります。単にワークシートの数値を取得して基本的にコピーしたい場合は、ワークシートを閉じて、電卓アクティビティに配置します。
私は文字通り何ヶ月もこの答えを探していたので、あなたが私に与えることができる情報を大いに感謝します. わかりました、しばらくあきらめていましたが、今は再開しています。コードやその他の情報を投稿する必要がある場合は、お知らせください。
これは私の電卓です。これは、新しい番号を editText(perbag) に入れたい場所です
public class Calculator extends Activity {
EditText perbag
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.calculator);
final MediaPlayer lighterFlick = MediaPlayer.create(this,
R.raw.lighter_sound);
// worksheet clickable textview
TextView initiateWorksheet = (TextView) findViewById(R.id.initiateWorksheet);
initiateWorksheet.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent("com.trhodes.saveonsmokes.WORKSHEET"));
}
});
これは、電卓アクティビティ内から開かれるワークシート アクティビティです。したがって、これの最初の部分は、「wsnewprice」で必要な数を取得することです。そのため、一番下には、ワークシートの「wsnewprice」を取得するボタン「wsok」があり、ワークシートを閉じて、上記の電卓アクティビティの editText「perbag」に配置します。
public class Worksheet extends Activity{
EditText wspriceperbag = null;
EditText wsweight = null;
EditText wsnewprice = null;
Button wscalculate;
Button wsok;
double Wspriceperbag = 0.00D;
double Wsweight = 0.00D;
double Wsnewprice = 0.00D;
double ounce = 6;
public Intent intent;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.worksheet);
wspriceperbag = (EditText) findViewById(R.id.wspriceperbag);
wsweight = (EditText) findViewById(R.id.wsweight);
wsnewprice = (EditText) findViewById(R.id.wsnewprice);
wscalculate = (Button) findViewById(R.id.wscalculate);
wsok = (Button) findViewById(R.id.wsok);
wscalculate.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
try {
Wspriceperbag = Double.parseDouble(wspriceperbag.getText()
.toString());
Wsweight = Double.parseDouble(wsweight.getText()
.toString());
} catch (NumberFormatException nfe) {
}
DecimalFormat localDecimalFormat = new DecimalFormat("#0.00");
Wsnewprice = (Wspriceperbag / Wsweight) * ounce;
wsnewprice.setText(localDecimalFormat.format(Wsnewprice));
}
});
wsok.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
今、これは私が使おうとしていたコードでしたが、私が言ったように、新しいアクティビティを開始したくないので、前のアクティビティに行きたいだけです。
to:
perbag.setText(getIntent().getExtras().getString("newprice"));
from:
Intent intent = new Intent(Worksheet.this, Calculator.class);
intent.putExtra("newprice",wsnewprice.getText().toString());
startActivity(intent);
これが混乱を招く場合は申し訳ありませんが、できるだけ明確にしようとしています。
編集:私が見つけた解決策について
元のアクティビティの新しいコード
//this is to start the worksheet
initiateWorksheet.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(Calculator.this, Worksheet.class);
startActivityForResult(i, 0);
//this is coming back to the original activity and placing the new data..
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK);
Bundle bundle = data.getExtras();
String s = bundle.getString("newprice");
perbag.setText(s);
ワークシート アクティビティの新しいコード:
//this is getting the new number and putting it into a string
wsok.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent newNumber = new Intent();
Bundle bundle = new Bundle();
bundle.putString("newprice", wsnewprice.getText().toString());
newNumber.putExtras(bundle);
setResult(RESULT_OK, newNumber);
finish();
//had to add this because force close when hitting the back button
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
Intent newNumber = new Intent();
Bundle bundle = new Bundle();
bundle.putString("newprice", "");
newNumber.putExtras(bundle);
setResult(RESULT_OK, newNumber);
finish();
あなたが応答したすべての人に感謝します。あなたがいなければ、私はまだ髪を引っ張っていたでしょう. さらに、最後のコード行なしで戻るボタンを押したときに強制終了することについて誰かが提案を持っている場合、私はすべて耳にします。それ以外の場合は、実際に私が望むように機能しているため、クールです。
ありがとう、トラヴィス