繁体   English   中英

如何从Android Studio中的Java中的另一个文件导入类?

[英]How to import class from another file in java in Android Studio?

我正在尝试将抗震性 text.java文件中的函数getUrlContents(string)调用到MainActivity.java文件中。 如何从文件中的任何位置调用函数? 任何信息或提示,不胜感激。 我将文件包括在下面。

这是我的MainActivity.java

package bt.alfaquake;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.app.NotificationManager;
import android.content.Intent;
import android.view.View;
import android.app.PendingIntent;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.NotificationCompat;
import bt.alfaquake.seismic_text;

public class MainActivity extends AppCompatActivity {   

    NotificationCompat.Builder notification;
    private static final int uniqueID = 123;

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

        notification = new NotificationCompat.Builder(this);
    }    
}

这是我的neural_text.java :包bt.alfaquake;。

import java.net.*;
import java.io.*;

public class seismic_text {

        public static String getUrlContents(String theUrl) {
            StringBuilder content = new StringBuilder();
            try
            {
                URL url = new URL(theUrl);
                URLConnection urlConnection = url.openConnection();

                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                String line;

                while ((line = bufferedReader.readLine()) != null)
                {
                    content.append(line + "\n");
                }
                bufferedReader.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            return content.toString();
        }
    }
}

只需在MainActivty.java中调用它即可:

seismic_text.getUrlContents(url);

您可以调用ismicate_text.getUrlContents(url); 但这会导致NetworkOnMainThreadException

只需将此调用包装到Simple AsynkTask。

class MyTask extends AsyncTask<Void, Void, String> {

    @Override
    protected String doInBackground(Void... params) {
      try {
        return seismic_text.getUrlContents(url);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
      return null;
    }

    @Override
    protected void onPostExecute(String result) {
      super.onPostExecute(result);
      // TODO handle result here
    }
  }

并从您的代码中调用它:

new MyTask().execute();

暂无
暂无

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

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