私はHello Ottoの基本プロジェクトで、どのように動作するかを学ぶために働いています。これはOtto 7.0.1のBusProviderです。 MainActivityには、バスオブジェクトに文字列をポストする最初のものをタップした後、2つのボタンがあります。これは私のBusProviderバスクラスを使用してMain2Activityに文字列を送信しますOttoは@Subscribeを呼び出さない
public class BusProvider {
private BusProvider() {}
private static Bus bus;
public static Bus getInstance() {
if (bus == null){
bus = new Bus();
}
return bus;
}
}
MainActivityある
public class MainActivity extends AppCompatActivity {
private Bus bus;
@Bind(R.id.myButton)Button mButton;
@Bind(R.id.button2)Button mButton2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setLibreries();
this.bus = BusProvider.getInstance();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
public void setLibreries(){
ButterKnife.bind(this);
}
@OnClick(R.id.myButton)
protected void buttonPressed1(){
Toast.makeText(this, "click on the 1 button",Toast.LENGTH_SHORT).show();
BusProvider.getInstance().post("HELLO OTTO");
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
@OnClick(R.id.button2)
protected void buttonPressed(){
Toast.makeText(this, "click on the 2 button",Toast.LENGTH_SHORT).show();
}
}
文字列に
public class Main2Activity extends AppCompatActivity {
private Bus bus;
@Bind(R.id.this_is_a_text_view) TextView myTextButter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
bus = BusProvider.getInstance();
ButterKnife.bind(this);
myTextButter.setText("HELLO");
}
@Override
protected void onResume() {
BusProvider.getInstance().register(this);
super.onResume();
}
@Override
protected void onPause() {
super.onPause();
BusProvider.getInstance().unregister(this);
}
@Subscribe
public void gettingStringPosted(String message){
Log.d("OTTO", "OTTO subscribe has been called "+message);
Toast.makeText(this,message,Toast.LENGTH_SHORT).show();
}
}
問題をどのように受け取るかMain2ActivityがあるものとトーストメッセージMainActivityにMainActivityで送信しています
ハローオットー
は表示されません。
私は間違っていますか?
でMainActivity
で
私のコメントにあなたのために言及した何をMainActivityでバスを登録してみましたか? –
はい、私はonResumeでしましたが、うまくいきません。 – JoCuTo
これで、BusProviderをMain2ActivityのonResumeメソッドに登録しても問題ありません。しかし、あなたはMain2Activityが作成される前に投稿しています。これはどうしてできますか? – Blackkara