如何从另一个Java类/活动中检索TextView数据

时间:2017-12-02 06:17:11

标签: java android textview

我有两个Java类。我想将TextView数据从DrinkDetail.java检索到Cart.java,以便将其保存到Firebase databaseTextViewdeliveryOption,并希望在“请求”表格中保存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);
}

4 个答案:

答案 0 :(得分:1)

在要从中检索数据的类中创建一个公共方法。与getData()类似,类似于此:

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

答案 1 :(得分:1)

可以使用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");

答案 2 :(得分:1)

如果您使用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");

答案 3 :(得分:0)

  

将数据从一个活动发送到另一个活动

     

DrinkDetail.java是您要发送数据的第一个活动   到另一个活动

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是第二个接收Intent数据的活动   你从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"));
}