如何在类之间发送字符串?

时间:2018-12-11 10:46:26

标签: java android string token call

大家好,我想在android studio中的java类之间发送字符串。 我有CreateToken.java和MainActivity.java类,如何将 String yourToken发送到MainActivity.java,如何在MainActivity.java中接收字符串yourToken,以及yourToken的结果是 com.example.user.application.CreateToken @ yourToken ,但yourToken不是完整的令牌,仅是7个字符。

这是我在CreateToken.java中的功能之一:

public class CreateToken {
private ICreateToken listener;

public CreateToken(ICreateToken listener) {
    this.listener = listener;
}

public Call<Token> api(final Context ctx){
    ApiInterface api = ApiClient.getClient().create(ApiInterface.class);
    String usernameApi = "web";
    String passwordApi = "123";
    Call<Token> getToken = api.postWebService(usernameApi,passwordApi);
    getToken.enqueue(new Callback<Token>() {
        @Override
        public void onResponse(Call<Token> call, Response<Token> response) {
            String error = response.body().getError();
            if (error.equals("false")){
                Toast.makeText(ctx, response.body().getToken(),Toast.LENGTH_SHORT).show();
                Log.d("Smart","Response : Token Show");
                String yourToken =  response.body().getToken();
                listener.onTokenGenerated(yourToken);
            }else {
                Toast.makeText(ctx, response.body().getMessage(),Toast.LENGTH_SHORT).show();
                Log.d("Smart","Response : Token NUll");
            }

        }
        @Override
        public void onFailure(Call<Token> call, Throwable t) {
            Log.d("Smart","Response : Token Null");

        }
    });
    return getToken;
}
public interface ICreateToken {
    void onTokenGenerated(String token);
}
}

这是我的MainActivity.java:

public class MainActivity extends AppCompatActivity implements CreateToken.ICreateToken {

    TextView textView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.textView);

                   CreateToken token = new CreateToken(MainActivity.this);
                   textView.setText(token.toString());
     }

    @Override
    public void onTokenGenerated(String token) {

    }
}

2 个答案:

答案 0 :(得分:0)

我认为您可以使用Android框架中的AsyncTask类: https://developer.android.com/reference/android/os/AsyncTask

然后使用doInBackground方法调用Web服务,而onPostExecute使用该调用的响应:

public ActivityExample extends AsyncTask <clazz1,clazz2,clazz3> {
 doInBackGround(clazz1 clazz){
  return result;
 }


 onPostExecute(clazz2 result){
  }
}

答案 1 :(得分:0)

如下所示在CreateToken类中创建接口ICreateToken

public interface ICreateToken {
  void onTokenGenerated(String token);
}

还要在CreateToken类中声明Interface字段

private ICreateToken listener;

,并从您的MainActivity传递上下文中的CreateToken类中,像这样

CreateToken token = new CreateToken(MainActivity.this);

然后在CreateToken构造函数中初始化侦听器

public CreateToken(ICreateToken listener) {
 this.listener = listner;
 }

最后,您可以通过onResponse返回令牌,

listener.onTokenGenerated(yourToken)

最后也是最重要的

MainActivity extends AppCompatActivity implements ICreateToken

在MainActivity中实现ICreateToken,它将要求在MainActivity中实现onTokenGenerated,在那里您将收到令牌。