繁体   English   中英

在另一个类中使用一个类的变量 - Java

[英]Using variable of one class in another class - Java

我有两节课。 第一个是MainActivity,另一个是Orders MainActivity.java如下

 public class MainActivity extends Activity implements
            ProductListAdapterListener {
        private static final String TAG = MainActivity.class.getSimpleName();
        public String itms1,itms2,itms3;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


    @Override
        public void onAddToCartPressed(Product product) {
            if(x==0)
            {
                itms1=",";
            }
            x++;
            PayPalItem item = new PayPalItem(product.getName(), 1, product.getPrice(), Config.DEFAULT_CURRENCY,product.getSku());
            productsInCart.add(item);
                itms2 = item.getName();
            itms2=itms2.concat(", ");
            itms1=itms2.concat(itms1);
                Toast.makeText(getApplicationContext(),
                        item.getName() + " added to cart! the cart now has:" + itms1, Toast.LENGTH_LONG).show();
            }

    }

在这里,我试图在另一个类 Orders.java 中使用变量 itms1,如下所示:

 public class Orders extends MainActivity {
        Button email, text;
        public String msg=itms1;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.orders);
            email = (Button) findViewById(R.id.email);
            text = (Button) findViewById(R.id.text);
         text.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    final String message = msg;

    //check whether the msg empty or not

                        final HttpClient httpclient = new DefaultHttpClient();
                        final HttpPost httppost = new HttpPost("http://ramsproject.16mb.com/sendorder.php");
                        Thread thread = new Thread(new Runnable(){
                            @Override
                            public void run() {

                                try {
                                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                                    nameValuePairs.add(new BasicNameValuePair("id", "01"));
                                    nameValuePairs.add(new BasicNameValuePair("message",message));
                                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                                    httpclient.execute(httppost);
                                    Toast.makeText(getBaseContext(), "Sent", Toast.LENGTH_SHORT).show();
                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                            }
                        });
                        thread.start();


                }


            });

        }
    }

在这里,当我尝试在 Orders.java 中使用变量 itms1 时,我得到 itms1 的值为 null。 我如何使用该变量的值,就像在另一个类中的 MainActivity.java 一样?

在这一行: public String itms1,itms2,itms3;

itms1已声明但从未初始化。

您获得 null 的原因是您的变量尚未初始化,并且仅在onAddToCartPressed()方法中onAddToCartPressed()

您可以通过这样做将变量itms1声明为公共静态变量,这样您就可以通过其类名(如MainActivity.itms1 )访问它。

如果您仍有疑问,请在下面评论。

希望这会有所帮助。

您可以拥有一个 Global 类,您可以在其中存储要跨活动访问的变量,如下所示

公共类全局扩展应用程序 {String itms1;}

在另一个活动中访问此字符串;

全局 g = (全局) getApplication(); 字符串 msg = g.itms1;

不要忘记在您的 AndroidMenifest.xml 中插入这一行; android:name=".Globals"

观察该静态变量的使用...请记住,它会存在于您的内存中,并会在不同线程之间共享。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM