Java 将字符串从类传递到主活动

Java 将字符串从类传递到主活动,java,android,Java,Android,我试图把某个课程的内容传递给我的主要活动,但似乎不起作用,我不明白为什么。 我在另一个类(不是主活动)上安装了GPS跟踪器,以便重用它。 当位置更改时,我希望我的另一个类从MainActivity中调用一个方法来更新我的UI 我这样总结了我的代码: My MAIN ACTIVITY : public class MainActivity extends Activity implements OnClickListener { TextView tv; EditText et; Butto

我试图把某个课程的内容传递给我的主要活动,但似乎不起作用,我不明白为什么。 我在另一个类(不是主活动)上安装了GPS跟踪器,以便重用它。 当位置更改时,我希望我的另一个类从MainActivity中调用一个方法来更新我的UI

我这样总结了我的代码:

 My MAIN ACTIVITY :

public class MainActivity extends Activity implements OnClickListener {

TextView tv;
EditText et;
Button btun;
int arg0;
int stuff;

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

    tv = (TextView) findViewById(R.id.tv);
    et = (EditText) findViewById(R.id.et);
    btun = (Button) findViewById(R.id.btun);
    btun.setOnClickListener(this);
}

private void setter(int stuff) {
    tv.setText(stuff);
}

public void setText(int _stuff) {
    _stuff = stuff;
    setter(_stuff);
}

@Override
public void onClick(View v) {
    Getter get = new Getter();
    get.getInfo(Integer.parseInt(et.getText().toString()));
}
另一类:

public class Getter {

int _getString;
MainActivity main = new MainActivity();

public void getInfo(int getString) {
    _getString = getString * 8;
    main.setText(_getString);
    }
}
我的LogCat中出现了一个NullPointerException 地址:

我真的不知道为什么,最重要的是,如何修复它

我将感谢任何帮助


(注:我的GPS跟踪器工作正常,只是调用了setter()方法。

这可能是因为主活动的onCreate()-方法尚未调用。因此,tv仍然为空,导致NullPointerException

实例化
MainActivity
的对象不会自动调用
onCreate
方法,但当使用
意图启动活动时会调用此方法;使用相同的意图可以传递额外值。例如e:

Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("key", value);
context.startActivity(intent);
然后在您的主要活动
onCreate
方法中:

String value = getIntent.getStringExtra("key");
编辑: 在您的情况下,为什么不更改
void getInfo(int getString)
以返回
String
值,即

public class Getter {
...
...

    public String getInfo(int getString) {
        _getString = getString * 8;
        return Integer.toString(_getString);
    }
}

然后在
main活动的
onClick
事件中
将返回的文本绑定到
TextView
这里有一个问题。main是一个活动,但它应该是调用此对象的main活动

public class Getter {

int _getString;
MainActivity main = new MainActivity();

public void getInfo(int getString) {
    _getString = getString * 8;
    main.setText(_getString);
    }
}
我无法真正理解您在Getter课程中想要实现的目标,但是:

1:将活动实例传递给对象

public class Getter {
        int _getString;
        MainActivity _main = null;

        public Getter(MainActivity main) {
            _main = main;
        }

        public void getInfo(int getString) {
            _getString = getString * 8;
            _main.setText(_getString);
        }
    }

@Override
public void onClick(View v) {
    Getter get = new Getter(this);
    get.getInfo(Integer.parseInt(et.getText().toString()));
}

2:在活动中设置文本,只从Getter获取值(我的选择)


使用应用程序类或创建一个单独的类并在其中声明一个静态变量。使用getter和setter方法获取值。若要从其他类更新MainActivity中的Textview,请从主活动传递Textview引用变量,并在其他类中设置null检查条件。如果Textview不为null,则更新该值。

即使my Getter类不是活动?不,在这种情况下,您不需要意图,只需实例化一个对象并调用setter方法,但为了初始化视图(TextView、editbutton等)您确实需要像活动一样调用它,以便可以初始化这些视图。因此,唯一的选项是使用意图?是的!否则,您将如何膨胀布局、查找和初始化视图?
public class Getter {
        int _getString;
        MainActivity _main = null;

        public Getter(MainActivity main) {
            _main = main;
        }

        public void getInfo(int getString) {
            _getString = getString * 8;
            _main.setText(_getString);
        }
    }

@Override
public void onClick(View v) {
    Getter get = new Getter(this);
    get.getInfo(Integer.parseInt(et.getText().toString()));
}
public class Getter {
    int _getString;
    MainActivity main = new MainActivity();

    public void getInfo(int getString) {
        return getString * 8;
    }
}

@Override
public void onClick(View v) {
    Getter get = new Getter();
    int info = get.getInfo(Integer.parseInt(et.getText().toString()));  
    setText(Integer.toString(info));
}