Java 如何使用两个活动之间的接口

Java 如何使用两个活动之间的接口,java,android,Java,Android,我正在使用捆绑包通过intent将我的数据从一个活动传递到另一个活动。现在,另一个活动接收到此捆绑包,我将在此处显示我传递的值。现在,当单击a按钮时,它将触发一个具有函数的界面。在这里,它显示一个空点错误 主课 public class MainActivity extends AppCompatActivity implements WILO.Communicator { int Tap=0,loss=9; @Override protected void onCreate(Bundle

我正在使用捆绑包通过intent将我的数据从一个活动传递到另一个活动。现在,另一个活动接收到此捆绑包,我将在此处显示我传递的值。现在,当单击a按钮时,它将触发一个具有函数的界面。在这里,它显示一个空点错误

主课

public class MainActivity extends AppCompatActivity implements WILO.Communicator {

int Tap=0,loss=9;

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

public void CountDowntimer()
{
    new CountDownTimer(3000, 1000) {
        @Override
        public void onTick(long millisUntilFinished)
        {
          Tap+=1;
            loss-=2;
        }

        @Override
        public void onFinish()
        {
            Bundle arg=new Bundle();
            arg.putInt("Tap",Tap);
            arg.putInt("Loss",loss);
            Intent i=new Intent(getBaseContext(),WILO.class);
            i.putExtras(arg);
            startActivity(i);
        }
    }.start();

}

@Override
public void Restart()
{
 CountDowntimer();
}
}
威洛级

public class WILO extends Activity {

Communicator communicator;

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

    Bundle arg=getIntent().getExtras();

    Button Restart;
    TextView Tap,Loss;
    Restart= (Button) findViewById(R.id.Restart);
    Tap= (TextView) findViewById(R.id.Tap);
    Loss= (TextView) findViewById(R.id.Loss);

    Loss.setText(String.valueOf(arg.getInt("Loss")));
    Tap.setText(String.valueOf(arg.getInt("Tap")));

    Restart.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            communicator.Restart();
            finish();
        }
    });
}
interface Communicator
{
    public void Restart();
}
}
错误

致命异常:主 进程:com.matrix.storm.question,PID:27805 java.lang.NullPointerException 位于com.matrix.storm.question.WILO$1.onClick(WILO.java:34) 在android.view.view.performClick上(view.java:4452) 在android.view.view$PerformClick.run(view.java:18451) 位于android.os.Handler.handleCallback(Handler.java:733) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:136) 位于android.app.ActivityThread.main(ActivityThread.java:5421) 位于java.lang.reflect.Method.Invokenactive(本机方法) 位于java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:979) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795) 在dalvik.system.NativeStart.main(本机方法)

如何使用两个活动之间的接口

不能使用接口连接两个活动。如果希望在两个活动之间发送接收数据,可以使用intent参数和ActivityResult方法的帮助

    Intent intent=new Intent(MainActivity.this,SecondActivity.class);  
                    startActivityForResult(intent, 2);

      @Override  
       protected void onActivityResult(int requestCode, int resultCode, Intent data)  
       {  
                 super.onActivityResult(requestCode, resultCode, data);  

       }

这不需要两个活动,因为第一个活动中没有UI。因此,您应该仅在同一活动中创建和显示计时器的结果。在onFinish()中,您应该更新UI,而不是调用第二个活动。