對noob問題抱歉。我有一個操作欄按鈕,將一個片段注入主要活動。該代碼工作正常時,它是onOptionsItemSelected塊中,像這樣:Android從內部調用一個類onOptionsItemSelected
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Intent intent;
switch (item.getItemId()) {
case R.id.action_chat:
Log.v("Click", "Chat button");
RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.main_layout);
LinearLayout ll = new LinearLayout(this);
ll.setId(999);
getFragmentManager().beginTransaction().add(ll.getId(), ChatFragment.newInstance()).commit();
mainLayout.addView(ll);
break;
case R.id.action_settings:
intent = new Intent(this, SettingsActivity.class);
startActivity(intent);
break;
}
return super.onOptionsItemSelected(item);
}
但我想有一個外部類處理片段插入(因爲這是一些需要提供給其他活動好)。所以,我把它稱爲是這樣的:
case R.id.action_chat:
ChatHandler chatHandler = new ChatHandler();
chatHandler.goChat(View view);
break;
而且在ChatHandler類:
public class ChatHandler {
public void goChat(View view) {
Log.v("GoChat", "Start");
RelativeLayout mainLayout = (RelativeLayout) view.findViewById(R.id.main_layout);
LinearLayout ll = new LinearLayout(this);
ll.setId(999);
getFragmentManager().beginTransaction().add(ll.getId(), ChatFragment.newInstance()).commit();
mainLayout.addView(ll);
}
}
我的問題是什麼參數,我需要在主要活動goChat傳遞以及如何(查看查看?)我是否參考ChatHandler類中的主要活動,如LinearLayout中的this = new LinearLayout(this);
謝謝!
你不應該在非活動類中執行UI任務。這樣你將不得不傳遞整個活動實例,並使諸如'mainLayout'等少量變量公開。不是一個好方法。 – Rohit5k2