2017-03-16 48 views
0

我將數據從一個活動傳遞到另一個活動,通過使用bundle的intent.now此捆綁由另一個活動在這裏接收我將顯示我通過的值當一個按鈕點擊它是假設發射一個有功能的接口。它顯示一個零點錯誤。如何使用兩個活動之間的接口

MainActivity.class

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(); 
} 
} 

WILO.class

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 at com.matrix.storm.question.WILO $ 1.onClick(WILO.java:34) at android.view.View.performClick(View.java:4452) at android.view.View $ PerformClick.run(View (Handler.java:95) at android.os.Looper.loop(Looper.java。) :Method.java:136) at android.app.ActivityThread.main(ActivityThread.java:5421) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java: 515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:979) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795) at dalvik.system.NativeStart.main (本機方法)

+0

您不需要兩個活動,因爲第一個活動中沒有UI。所以你應該只在同一個活動中創建和顯示計時器的結果。在onFinish()中,您應該更新UI而不是調用第二個活動。 – anubh

回答

0

如何使用兩個活動

之間的界面無法連接使用接口的兩項活動。如果要在兩個活動之間發送接收數據,可以使用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); 

     } 
相關問題