重新输入片段

时间:2016-05-09 17:32:33

标签: java android android-fragments button otto

我有两节课。一个扩展FragmentActivity(MainActivity.java),另一个扩展Fragment(HomeFragment.java)。 我想要的是在MainActivity中创建一个图像按钮并将其放在home_fragment.xml中,然后更新HomeFragment.java,以便我的图像按钮永久保留在布局中。现在,我有一个按钮,将它添加到home_fragment.xml,并且工作正常,但是如果我离开该片段并返回它(通过单击按钮),该按钮就会消失。

这是我界面的图片。 home_fragment是带有" DriveDroid"的空白区域。里面的按钮。当我点击"按钮1"时启动它。如果我单击按钮2,3或4,则会激活另一个片段,如果我返回到"按钮1",打开home_fragment.xml,那么" DriveDroid"按钮消失了。

enter image description here

MainActivity正在运行一个单独的线程并在端口上侦听传入的图像。获得此图像后,它会创建一个以图像为背景的图像按钮。它将此图像按钮添加到xml布局(home_fragment)。这一切都正常工作,这是我对MainActivity的代码:

private void RepeatTask()
{
  repeatTaskThread = new Thread()
  {
     public void run()
     {
        while (true)
        {


           try {


              System.out.println("TRY_1");

              Socket socket = new Socket("72.120.55.34", 5050);

              // Get data sent through socket
              DataInputStream DIS = new DataInputStream(socket.getInputStream());

              System.out.println("DataInputStream Started");

              // read data that got sent
              String applicationName = DIS.readUTF();


              // read array data for bitmap

              int len = DIS.readInt();
              byte[] data = new byte[len];

              DIS.readFully(data, 0, data.length);


               Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
               final Drawable d = new BitmapDrawable(getResources(), bitmap);



              runOnUiThread(new Runnable() {
                 @Override
                 public void run() {
                    // TODO Auto-generated method stub


                    Log.d("tag_name", "Try_2");


                    ImageButton btn = new ImageButton(getApplicationContext());
                    //btn.setId(1);
                    btn.setBackgroundDrawable(d);
                    Log.d("tag_name", "Create Button" + btn);

                    ViewGroup RelativeLayout = (ViewGroup) findViewById(R.id.home_fragment);
                    btn.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
                            ViewGroup.LayoutParams.WRAP_CONTENT));

                    RelativeLayout.addView(btn);
                    Log.d("tag_name", "Button Added to View" + RelativeLayout);


                    btn.setOnClickListener(new View.OnClickListener() {

                       @Override
                       public void onClick(View v) {



                       }
                    });


                 }
              });



              socket.close();


           } catch (Exception e) {


              System.out.println("Exception is "+e.toString());

           }



           try
           {
              // Sleep for 5 seconds
               Thread.sleep(5000);
           }
           catch (Exception e)
           {
              e.printStackTrace();
           }
        }
     };
  };
  repeatTaskThread.start();
}

如何在HomeFragment中更新此图像按钮?这甚至是我应该做的事情吗?我只需要我的图像按钮,现在只要我的代码的其他部分在HomeFragment上调用就会出现。

以下是按下Button1时调用HomeFragment的方法(此代码位于另一个片段中):

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fr_menu, container, false);

    // get home image button
    ImageButton Button1 = (ImageButton) view.findViewById(R.id.btnHOME);
    // button listener
    Button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.replace(R.id.container, new HomeFragment()).commit();
        }
    });

0 个答案:

没有答案