Ciao a tutti, scusate la mia ignoranza ma sono nuovo. Ho creato una applicazione con lo swipe + tabs, quindi la mainActivity in realtà è un fragment activity, ho creato una scheda con i vari bottoni, ma non riesco a inserirci una logica all'interno. Mi spiego meglio, il tab in questione ha dei bottoni "aprire connessione", e "chiudi connessione", ma non so dove inserire la banalissima logica di programmazione all'interno del fragmentActivity. Confermo che le poche righe di codice che ho creato funzionano in una semplice Activity, vi posto il codice
Questo è il main
e questa è l'activity per la connessione e la disconnessionecodice:public class MainActivity extends FragmentActivity implements ActionBar.TabListener { private static Socket socket = new Socket(); private static DataOutputStream outToServer = null; private static String ip = "192.168.50.104"; private static int port = 2000; SectionsPagerAdapter mSectionsPagerAdapter; ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); mSectionsPagerAdapter = new SectionsPagerAdapter( getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageSelected(int position) { actionBar.setSelectedNavigationItem(position); } }); for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) { actionBar.addTab(actionBar.newTab() .setText(mSectionsPagerAdapter.getPageTitle(i)) .setTabListener(this)); } setContentView(R.layout.activity_connection); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); getMenuInflater().inflate(R.menu.connection, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } @Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { mViewPager.setCurrentItem(tab.getPosition()); } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } public void onListFragmentItemClick(int position) { } public class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { switch (position) { case 0: return new TabHome(); case 1: return new TabBoiler(); case 2: return new TabComfort(); case 3: return new TabEnergy(); case 4: return new TabSetting(); } return null; } @Override public int getCount() { return 5; } @Override public CharSequence getPageTitle(int position) { Locale l = Locale.getDefault(); switch (position) { case 0: return getString(R.string.home).toUpperCase(l); case 1: return getString(R.string.boiler).toUpperCase(l); case 2: return getString(R.string.comfort).toUpperCase(l); case 3: return getString(R.string.energy).toUpperCase(l); case 4: return getString(R.string.action_settings).toUpperCase(l); } return null; } } public static class DummySectionFragment extends Fragment { public static final String ARG_SECTION_NUMBER = "section_number"; public DummySectionFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false); return rootView; } } public static class TabHome extends Fragment { public static final String ARG_SECTION_NUMBER = "section_number"; public TabHome() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.home, container, false); return rootView; } } public static class TabBoiler extends Fragment { public static final String ARG_SECTION_NUMBER = "section_number"; public TabBoiler() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.boiler, container, false); return rootView; } } public static class TabComfort extends Fragment { public static final String ARG_SECTION_NUMBER = "section_number"; public TabComfort() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.comfort, container, false); return rootView; } } public static class TabEnergy extends Fragment { public static final String ARG_SECTION_NUMBER = "section_number"; public TabEnergy() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.energy, container, false); return rootView; } } public static class TabSetting extends Fragment { public static final String ARG_SECTION_NUMBER = "section_number"; public TabSetting() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.activity_connection, container, false); return rootView; } } }
mi rendo conto che è un problema sciocco, ma questi fragment non so proprio trattarli...codice:public class ConnectionActivity extends Activity { private Socket socket = new Socket(); private Button buttonDisconnect; private Button buttonConnect; private Button buttonControl; private Button buttonSend; private EditText textIp = (EditText) findViewById(R.id.textIp); private EditText textPort = (EditText) findViewById(R.id.textPort); private DataOutputStream outToServer = null; private String ip = "192.168.50.104"; private int port = 2000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_connection); Intent intent = getIntent(); buttonConnect = (Button) findViewById(R.id.buttonOpen); buttonConnect.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplicationContext(),"BAL BLA",Toast.LENGTH_SHORT).show(); ip = textIp.getText().toString(); port = Integer.parseInt(textPort.getText().toString()); InetSocketAddress addr = new InetSocketAddress(ip, port); new ConnectToIpTask().execute(addr); } }); buttonDisconnect = (Button) findViewById(R.id.buttonClose); buttonDisconnect.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { new CloseSocket().execute(); socket = new Socket(); } }); buttonControl = (Button) findViewById(R.id.buttonConfirmed); buttonControl.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { if (socket.isBound()) Toast.makeText(getApplicationContext(),"connesso",Toast.LENGTH_SHORT).show(); else Toast.makeText(getApplicationContext(),"disconnesso",Toast.LENGTH_SHORT).show(); } }); buttonSend = (Button) findViewById(R.id.ButtonSend); buttonSend.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { try { outToServer.writeBytes("\n"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { outToServer.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); buttonControl.setEnabled(true); buttonDisconnect.setEnabled(false); buttonSend.setEnabled(false); buttonConnect.setEnabled(true); } private class ConnectToIpTask extends AsyncTask<InetSocketAddress, Void, Boolean> { @Override protected Boolean doInBackground(InetSocketAddress... params) { InetSocketAddress addr = params[0]; try { socket = new Socket(ip, port); } catch (UnknownHostException e) { e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); return false; } try { outToServer = new DataOutputStream(socket.getOutputStream()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return true; } @Override protected void onPostExecute(Boolean result) { super.onPostExecute(result); if (socket.isBound()) { buttonDisconnect.setEnabled(true); buttonSend.setEnabled(true); buttonConnect.setEnabled(false); } } } private class CloseSocket extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { try { outToServer.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); if (socket.isClosed()) { buttonDisconnect.setEnabled(false); buttonSend.setEnabled(false); buttonConnect.setEnabled(true); } } } }

Rispondi quotando
