将值从一个类传递到另一个类

时间:2015-01-02 06:38:55

标签: java android

我试图将值从一个类传递到另一个类。我不能使用intent,因为该类扩展了一个自定义库,我不能使用bundle和stuffs(如果我正确的话)。这是我尝试过的。

我有两个类callhelper.java,它监视Incoming和Outgoing调用。当一个动作被触发时,它会从DB填充数据并将其发送到另一个显示弹出窗口的类。

callhelper class

public void onReceive(Context context, Intent intent) {
             String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
                String out = null;

            String query = "select * from ReminderTable" ;
            Cursor c2=   enter.selectQuery(query);
             //GetData and place it in out

    //Instance of 2nd class PopUpDisplay set = new PopUpDisplay();
    //passing out to function   set.setData(out);
    // calling 2nd class to display popup //  StandOutWindow.show(context, PopUpDisplay.class, StandOutWindow.DISREGARD_ID);
                     Toast.makeText(ctx, out, Toast.LENGTH_LONG).show();
             enter.close();

在popupdisplay类中,我有一个全局变量和一个方法setData(),它将值设置为变量。

@Override
public void createAndAttachView(int id, FrameLayout frame) {
        // create a new layout from body.xml
        LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
     view = inflater.inflate(R.layout.simple, frame, true);
     tv1 = (TextView)view.findViewById(R.id.tvdisplaypoptitle);
        tv = (TextView) view.findViewById(R.id.tvdisplaypopnote);

        tv.setText(note);
        tv1.setText("Title");
    btn1 = (Button) view.findViewById(R.id.btn3);
    btn1.setOnClickListener(this);

}

public void setData(String a){
        note = a;
}

createAndAttachView是我想要设置textview以显示从前一个类传递的消息的方法。此方法设置Popup的布局。弹出窗口在StandOutWindow.show()方法的CallHelper类中调用。

所以,问题是,无论何时显示弹出窗口,它都会显示null。如何让它显示我的消息而不是null。应该加入多少代码?请帮忙解决这个问题。提前谢谢。

2 个答案:

答案 0 :(得分:0)

创建一个SharedPrefencesHelper类,使其具有您想要在各种类中使用的所有全局变量,然后您可以使用简单的getter方法在应用程序的任何位置使用这些变量。查找SharedPreferences,它非常易于使用。 / p>

答案 1 :(得分:0)

由于这是运行时数据,因此不建议使用共享首选项。创建一个名为RunTimeData.java的类。在此声明所有必需变量为static。每当您需要保存数据时,请将其保存到这些变量中。在其他类中使用数据后,请确保通过将变量设置为null来重新调整变量。

实施例

public class RunTimeData{
public static String name=null;

}

虽然分配数据的确如下使用。

RuntimeData.name = “YYYYY”;

使用数据时使用如下。

TextView tv = new TextView(); tv.setText(RunTimeData.name);

RunTimeData.name = NULL;

当您确定某个地方不再使用该值时,释放该变量。