在我的第一个Activity
中,“ +”按钮打开了第二个活动。在第二个活动中,我想单击一个按钮以添加到计数器,然后将该增量数字传递给我的第一个活动。现在,我只能从第一个活动中添加到计数器中。
MainActivity.java
public class MainActivity extends AppCompatActivity {
private Button addBtn;
int quantity = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addBtn = (Button) findViewById(R.id.addBtn);
addBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openAddStarActivity();
}
});
}
public void openAddStarActivity() {
Intent intent = new Intent(this, AddStarActivity.class);
startActivity(intent);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
if(resultCode == RESULT_OK) {
TextView textView = (TextView)
findViewById(R.id.quantity_text_view);
textView.setText(data.getStringExtra("textViewText"));
}
}
}
public void increment(View view) {
if (quantity == 100) {
return;
}
quantity = quantity + 1;
displayQuantity(quantity);
}
private void displayQuantity(int numberOfStars) {
TextView quantityTextView = (TextView)
findViewById(R.id.quantity_text_view);
quantityTextView.setText("" + numberOfStars);
}
}
AddStarActivity.java
public class AddStarActivity extends AppCompatActivity {
int quantity = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_star);
}
public void increment(View view) {
if (quantity == 100) {
return;
}
quantity = quantity + 1;
displayQuantity(quantity);
}
private void displayQuantity(int numberOfStars) {
TextView quantityTextView = (TextView)
findViewById(R.id.quantity_text_view);
quantityTextView.setText("" + numberOfStars);
}
@Override
public void onBackPressed(){
TextView textView = (TextView) findViewById(R.id.quantity_text_view);
Intent i = new Intent(this,MainActivity.class);
setResult(RESULT_OK, i);
i.putExtra("textViewText", textView.getText().toString());
startActivityForResult(i,0);
}
}
我在第二个活动上添加了一个Textview,以便我可以将其简单地传递到我的第一个活动中的textview数据字段中
答案 0 :(得分:1)
在MainActivity中使数量成为公共静态变量,并在AddStarActivity中增加相同的静态变量。所以你的功能将是
public void increment(View view) {
if (MainActivity.quantity == 100) {
return;
}
MainActivity.quantity++;
displayQuantity(MainActivity.quantity);
}
答案 1 :(得分:0)
您可以通过以下波纹管方式进行操作
广播接收器
在您的第一个活动中注册广播,并从您的第二个活动中射击,并使用以下示例的数据
在您的第一次活动中
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null && intent.getAction().equals("SendCounter")) {
counter=intent.getIntExtra("value",0);
}
}
};
registerReceiver(receiver,new IntentFilter("value"));
第二次活动
Intent intent=new Intent("SendCounter");
intent.putExtra("value",counterValue);
sendBroadcast(intent);
静态成员
在活动中定义一个变量并将其定义为静态,以便您可以将该特定成员访问为静态。
您的第一次活动
public static int counter;
现在在第二个活动中,您可以在第一个活动变量中添加值,例如波纹管
ActivityFirst.counter=30 //New value
答案 2 :(得分:0)
启动AddStarActivity时,MainActivity不应调用startActivity
,而应调用startActivityForResult
。然后在AddStarActivity中,递增时将调用setResult
。最后,从AddStarActivity中删除onBackPressed
。当用户单击“后退”按钮从您的AddStarActivity返回到MainActivity(意味着系统将finish
添加StarActivity)时,将调用MainActivity#onActivityResult
。