如何从另一个 Java class / activity 检索 TextView 数据

How to retrieve TextView data from another Java class / activity

我有两个Java类。我想将 DrinkDetail.java 中的 TextView 数据检索到 Cart.java 中,以便将其保存到 Firebase database 中。 TextViewdeliveryOption 并希望从请求 table.

保存到 Cart.java

我该怎么做?下面是我的 Java 代码。

DrinkDetail.java

public class DrinkDetail extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_drink_detail);

private void showAlertDialogChooseOptions() {
alertDialog = new AlertDialog.Builder(DrinkDetail.this);
    alertDialog.setTitle("Drop by our kiosk or rider deliver?");

    LayoutInflater inflater = this.getLayoutInflater();
    View takeaway_deliver = inflater.inflate(R.layout.takeaway_delivery, null);

    btnTakeAway = (FButton)takeaway_deliver.findViewById(R.id.btnTakeAway);
    btnDelivery = (FButton)takeaway_deliver.findViewById(R.id.btnDelivery);
    deliveryOption = (TextView)takeaway_deliver.findViewById(R.id.deliveryOptionChosen);

    alertDialog.setView(takeaway_deliver);
    alertDialog.create();

    btnTakeAway.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            deliveryOption.setText("Take Away");
            alertDialogTakeAway.show();
        }
    });
}

Cart.java:

public class Cart extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cart);

private void showAlertDialog() {
    alertDialog2 = new AlertDialog.Builder(Cart.this);
    alertDialog2.setTitle("Cash on Delivery:");
    alertDialog2.setMessage("Choose amount of money will be given to the rider upon order arriving: ");

    LayoutInflater inflater2 = this.getLayoutInflater();
    View cash_on_delivery = inflater2.inflate(R.layout.cash_on_delivery, null);

    btnOrderNow = (FButton)cash_on_delivery.findViewById(R.id.btnOrderNow);
    btnOrderNow.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Submit to Firebase
            Request request = new Request(
                    Common.currentUser.getPhone(),
                    Common.currentUser.getName(),
                    editAddress.getText().toString(),
                    txtTotalPrice.getText().toString(),
                    "0", //status
                    editComment.getText().toString(),
                    paymentMethod.getText().toString(),
                    moneySelected.getText().toString(),
                    //WANTED TO SAVE DELIVERY OPTION "TAKE AWAY" HERE,
                    cart
            );
            requests.child(String.valueOf(System.currentTimeMillis()))
                    .setValue(request);

            //Order placed
            alertDialogOrderPlaced.show();
            alertDialog2.setCancelable(true);
        }
    });

    alertDialog2.setView(cash_on_delivery);
    alertDialog2.setIcon(R.drawable.icons8_cash_in_hand_filled_50);
}

在要从中检索数据的 class 中创建一个 public 方法。喜欢getData(),类似这样的东西:

public Data getData(){
   return this.data;
}

可以使用SharedPreferences存储数据。 在您的 DrinkDetail.java 中保存数据。

SharedPreferences prefs = this.getSharedPreferences("File", MODE_PRIVATE);
prefs.edit().putString("deliveryOption", deliveryOption.getText()).apply();

在你的 Cart.java 中你可以找回它。

SharedPreferences prefs = this.getSharedPreferences("File", MODE_PRIVATE);
String deliveryOption = prefs.getString("deliveryOption", "default");

如果您使用 Intent 从 DrinkDetail 导航到购物车,那么您可以在 Intent 本身中传递该字符串。

像这样

Intent intent=new Intent(DrinkDetail.this, Cart.class);
intent.putExtra("Key","String value you want to pass");
startActivity(intent);

并且可以在 Cart.java 中的 onCreate() 方法

代码下方检索该字符串
String value;
if(getIntent()!=null) 
    value=getIntent().getStringExtra("Key");

To send the data from one activity to another activity

DrinkDetail.java is first activity from where you want to send data to another activity

DrinkDetail.java

TextView aText = (TextView )findViewById(R.id.textview);
String text = aText .getText().toString();

Intent myIntent = new Intent(view.getContext(),Cart.java);
myIntent.putExtra("mytext",text);
startActivity(myIntent);

Cart.java is second activity which receive the Intent data whatever you pass from DrinkDetail.java

Cart.java

public class Cart extends Activity {

TextView mTextview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.Cart);

    aTextview = (TextView)findViewById(R.id.textView);

    aTextview.setText(getIntent().getStringExtra("mytext"));
}