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