如何在简单类中设置MainActivity的Textview中的值

时间:2015-02-02 20:56:02

标签: android

我有两个类一个是MainActivity.java,另一个是简单的Java类ConnectMe.java。我在MainActivity上有单个按钮和单个EditText。我使用按钮登录所以它也被命名为btnLogin。在clickListener上,我从EditText(字符串格式)中获取Ip,并从ConnectMe.java类中调用Login函数,该类将字符串作为参数。

现在在ConnectMe类中,我检查应用程序是否连接到服务器,它应该在EditText中显示连接消息,还应该在MainActivity上显示Toast。我不知道如何做到这一点,因为我是Android的新手。

这是我的示例代码

public class MainActivity extends Activity {
    Button btngLogin;
    EditText etIp;


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

            @Override
            public void onClick(View arg0) {
                ConnectMe connectMe = new ConnectMe();
                connectme.LogMeIn(etIp.getText().toString);
            }
        });



    }

这是我用于连接的java类

public class ConnectMe {

     MainActivity mainActivity = new MainActivity();


    void LogMeIn(String ip){

   MyConnectedmethod.Connectednew (new Runnable() {

        public void run() {

         mainActivity.setText("connected");  

}    
}

我知道代码不正确,但我只想给你一个想法。我在设置EditText文本的行上得到零点异常。

通过一些研究,我发现我无法直接触及Thread和Runnable中的视图。我被告知使用runOnUiThread。比如mainActivity.runOnUiThread但它也没有帮助给出nullpointexception的错误。

所以请帮助我,因为我是Android编程新手

3 个答案:

答案 0 :(得分:2)

这里有很多事情发生。

  1. 基本上没有实例化活动的实例。
  2. Activity没有.setText()方法。这就是空指针。
  3. 执行简单的工作任务比创建自己的线程并自行管理更容易。使用AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html
  4. 编辑: 您可以根据需要运行尽可能多的AsncTasks。没有更多的背景,很难确切地说出你最好的方法是什么。但是,听起来你可能想要运行某种服务。 (http://developer.android.com/reference/android/app/Service.html)。根据您的要求,有几种不同的口味可供选择。如果它需要一直运行,而不是您的应用程序正在运行,那么请使用启动服务。如果它只需要在UI运行时运行,那么绑定服务就是选项。如果它需要经常做一些事情,那么意图服务/广播接收器/警报管理器的某些组合就是路径。

    您甚至可能不需要服务。如果您只是加载了几件事,请使用loader manager。对于下载内容,SyncAdapter可能是最佳选择。重点是,在24API之后,最常见的任务已经有了现成的解决方案。所以,在大多数情况下,你不需要自己动摇线程。

答案 1 :(得分:0)

发生NullPointerException是因为您缺少声明Button btngLogin引用的对象。

btngLogin = findViewById(R.id.yourbuttonnameinxml);

对EditText执行相同的操作。

答案 2 :(得分:0)

我认为您最好首先阅读此内容,使用意图启动另一项活动并在两个活动(类)之间共享消息:http://developer.android.com/training/basics/firstapp/starting-activity.html