Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 请帮助我将数据从服务传递到Android Studio中的活动_Java_Android_Android Intent_Android Activity_Android Service - Fatal编程技术网

Java 请帮助我将数据从服务传递到Android Studio中的活动

Java 请帮助我将数据从服务传递到Android Studio中的活动,java,android,android-intent,android-activity,android-service,Java,Android,Android Intent,Android Activity,Android Service,我正在尝试制作一个简单的介绍性应用程序,允许用户通过文本字段向应用程序提供两个数字,通过服务添加两个数字,然后将值传递回我的主要活动,并通过文本视图显示。问题是,我在尝试将答案传递回主要活动时出错。我知道服务不应该用于这个简单的操作,但正如我前面所说的,这是介绍性的 以下是我的主要活动代码: import android.content.ComponentName; import android.content.Context; import android.content.Intent; im

我正在尝试制作一个简单的介绍性应用程序,允许用户通过文本字段向应用程序提供两个数字,通过服务添加两个数字,然后将值传递回我的主要活动,并通过文本视图显示。问题是,我在尝试将答案传递回主要活动时出错。我知道服务不应该用于这个简单的操作,但正如我前面所说的,这是介绍性的

以下是我的主要活动代码:

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {

MyService myService;
boolean isBound = false;
private static TextView entry;
private static EditText entry1;
private static EditText entry2;

public void addAllTheNumbers(View view){
    entry1 = (EditText) findViewById(R.id.entry1);
    entry2 = (EditText) findViewById(R.id.entry2);
    entry = (TextView) findViewById(R.id.answer);

    final String s = entry1.getText().toString();
    final String s1 = entry2.getText().toString();

    Intent n = new Intent(this,MyService.class);
    n.putExtra("firstNumber", s);
    n.putExtra("secondNumber", s1);
    startService(n);

    Bundle answerData = getIntent().getExtras();
    String e = answerData.getString("e");

    entry.setText(e);
}
以下是服务代码:

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;

public class MyService extends Service {

private final IBinder ryansBinder = new MyLocaleBinder();

public MyService() {
}

@Override
public IBinder onBind(Intent intent) {

    return ryansBinder;

}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {


    String comeOn = intent.getStringExtra("firstNumber");
    String man = intent.getStringExtra("secondNumber");


    int firstNum = 0;
    int secondNum = 0;

    try {
        firstNum = Integer.parseInt(comeOn);
        secondNum = Integer.parseInt(man);
    } catch (NumberFormatException nfe) {
        return Integer.parseInt(null);
    }

    int sum;

    sum = firstNum + secondNum;

    String answer1 = String.valueOf(sum);

    Intent t = new Intent(this,MainActivity.class);
    t.putExtra("s",answer1);

    return START_STICKY;
}





public class MyLocaleBinder extends Binder{
    MyService getService(){
        return MyService.this;
    }
}
}
最后,我的错误代码:

08-12 17:37:50.252  31546-31546/com.example.vanessaanthony.myfirstservice E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.vanessaanthony.myfirstservice, PID: 31546
java.lang.IllegalStateException: Could not execute method of the activity
        at android.view.View$1.onClick(View.java:4020)
        at android.view.View.performClick(View.java:4780)
        at android.view.View$PerformClick.run(View.java:19866)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5257)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
 Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at android.view.View$1.onClick(View.java:4015)
        at android.view.View.performClick(View.java:4780)
        at android.view.View$PerformClick.run(View.java:19866)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5257)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.os.Bundle.getString(java.lang.String)' on a null object reference at com.example.vanessaanthony.myfirstservice.MainActivity.addAllTheNumbers(MainActivity.java:38)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at android.view.View$1.onClick(View.java:4015)
        at android.view.View.performClick(View.java:4780)
        at android.view.View$PerformClick.run(View.java:19866)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5257)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

当您创建服务时,它会在活动旁边运行,而不是像它是另一个方法一样与活动同步。看起来您期望意图会从服务返回到onCreate中,但它不会返回,因为它将在意图不存在时尝试读取意图


请看一下如何使用。创建一个接收者以从服务中获取意图,然后在该接收者中用结果更新UI。

正如您所说,您不应该为此使用服务,而应该只是修改代码 字符串e=answerData.getString(“e”)

你在试着得到“e”

t、 putExtra(“s”,回答1)

你通过了“s”,应该是“e”

我不知道这是否管用

但另一种方法是使用活动来获得结果

问候