public class MyActivity extends Activity implements ButtonFragement.OnFragmentInteractionListener, TextFragment.OnFragmentInteractionListener,Communicator {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
ButtonFragement btnfrg=new ButtonFragement();
TextFragment txtfrg= new TextFragment();
FragmentManager fm=getFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
ft.add(R.id.my_activity,btnfrg,"Fragment");
ft.add(R.id.my_activity,txtfrg,"Second Fragment");
ft.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.my, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onFragmentInteraction(Uri uri) {
}
@Override
public void respond(String data) {
FragmentManager fm=getFragmentManager();
TextFragment f1= (TextFragment) fm.findFragmentById(R.id.textfrg);
f1.changeText(data);
}
}
這是我的main_Activity代碼,在這裏,我想在片段發送數據,但它給了我錯誤的f1.changeText(數據)我的項目。基本結構在主Activity上,我創建了兩個片段。一個帶有按鈕,另一個帶有文本。我想顯示使用通信器接口在第二個片段上單擊了多少次按鈕。這裏在「數據」計數器顯示按鈕被點擊了多少次,但我無法通過第二個片段傳輸它。如何從主要活動將數據發送到分段
本程序完成代碼---
public interface Communicator {
public void respond(String data);
}
在TextFragment
類別i中加入這種方法----
public void changeText(String data)
{
txt.setText(data);
}
在ButtonFragment
類別i添加和修改以下方法
public class ButtonFragement extends Fragment implements View.OnClickListener{
int counter=0;
private OnFragmentInteractionListener mListener;
Button btn;
Communicator comm;
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
comm= (Communicator) getActivity();
btn= (Button) getActivity().findViewById(R.id.button);
btn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
counter++;
// comm.respond("The button was clicked "+counter+" times");
comm.respond("hi");
}
在這裏,我剛剛添加了我在程序中添加的內容。我的程序崩潰在... MainActiviy f1.changeText(data);
但爲什麼我沒有得到它。誰能幫我修復這個bug?
感謝您的回覆,但它不會爲我工作。運行後出現以下錯誤。09-23 04:31:36.776 1328-1328/com.example.Ui.multifragementapp D/AndroidRuntime:關閉VM 09-23 04:31:36.796 1328-1328/com.example。 Ui.multifragementapp W/dalvikvm:threadid = 1:線程以未捕獲的異常退出(group = 0xb1a59ba8) 09-23 04:31:37.316 1328-1328/com.example.Ui.multifragementapp E/AndroidRuntime:致命例外:main 過程:com.example.Ui.multifragementapp,PID:1328 java.lang.NullPointerException – 2014-09-23 08:32:36
請問您可以寫更詳細的日誌嗎? – 2014-09-23 12:27:41
在這裏,我添加了我的程序的完整代碼,請通過它並幫助我修復bug。謝謝 – 2014-09-24 09:37:50