27 Temmuz 2017 Perşembe

FRAGMENTLER ARASI VERİ GEÇİŞİ - ANDROID

Fragment sayesinde ayni ekran icinde bir cok islem yapabiliriz. Yeni bir activity olusturmak yerine bir activity icine birden fazla fragment olustururuz. Hem bu sekilde yeniden sayfa yuklenmesine gerek olmadigi icin uygulamamiz daha hizli calisir.

Bu uygulamamizda ust kisimda bir buton olacak ve alt kisimda textbox yer alacak. Butona tiklandikca altta kac defa tiklandigi yazacak. Bunun icin iki tane Fragment olusturacagiz. Ve bu fragmentler arasinda veri tasinmasi gerekiyor. Bu tasinacak veri butona kac defa tiklandigi bilgisi olacak. Fragment B bu bilgiyi alip textview de gosterecek. Bu iki fragment arasinda veri aktarimini interface yardimiyla yapacagiz. Asagiya en sonda ekraninin nasil goruneceginin resmini koyacagim.


Simdi sirasiyla kodlarimi asagiya ekleyecegim.


fragment_a.xml




fragment_b.xml







FragmentA.java


import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

public class FragmentA extends Fragment implements View.OnClickListener {

    Button btnTikla;
    int counter = 0;
    VeriAkisi veriAkisi;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_a, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        btnTikla = ((Button) getActivity().findViewById(R.id.clickMeBtn));
        btnTikla.setOnClickListener(this);
        veriAkisi = ((VeriAkisi) getActivity());
    }

    @Override
    public void onClick(View view) {
        counter++;
        veriAkisi.veriAktar("Butona "+counter+" defa tiklandi");
    }
}



FragmentB.java

import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class FragmentB extends Fragment {

    TextView tikSayisi;
    String text;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_b, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        tikSayisi = (TextView)getActivity().findViewById(R.id.tikSayisi);
    }

    public void tiklanmaSayisiniGoster(String text){
        this.text = text;
        tikSayisi.setText(text);
    }
}



VeriAkisi.java

public interface VeriAkisi {
    public void veriAktar(String data);
}



activity_main.xml




MainActivity.java


import android.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity implements VeriAkisi {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public void veriAktar(String data) {
        FragmentManager manager = getFragmentManager();
        FragmentB fragmentB = (FragmentB) manager.findFragmentById(R.id.fragment5);
        fragmentB.tiklanmaSayisiniGoster(data);
    }
}



Ve uygulamamiz calisir.

kaynak: burada

21 Temmuz 2017 Cuma

HAFIZA ERISIM HIZLARI

Bilgisayarda en hizli erisim sirayla:
Cache
Memory
Harddisk
External diskler
dir. En hizli erisim, hafizanin cache'ine yapilir. Daha sonra hafizanin kendisine, daha sonra harddiske yapilir. Cache ve memory erisimleri arasinda 4-5 kat hiz farki varken, harddisk erisimi, hafiza erisiminden 50-200 kat yavastir. Bu nedenle, en yuksek performans icin mumkun oldugu kadar hafizayi kullanmayi tercih etmelisiniz. Bilgisayarinizin uzun sure acik kaldiktan sonra yavaslamasi bu nedendir (hafiza bilgisayar acildigindan itibaren dolmaya baslar ve bir sure sonra, cok dolu olacagi ve bazen de gereksiz programlar tarafindan isgal edilecegi icin hafizanizdaki bos yer azalir) Bircok programin ayni anda calismasi da, hafizanin cok yogun kullanilip bilgisayarin yavaslamasina bir ornektir. (Network erisimi, USB disk erisimi, CD erisimi, SCSI disk erisimi gibi erisimler harddiskten cogu zaman yavastir.

Kaynak : http://ege-akpinar.blogspot.com/2009/06/javada-inputoutput.html

20 Temmuz 2017 Perşembe

JAVA VERİTABANI BAĞLANTISI - SQL SERVER

Java ile veritabanindan veri listeleme islemi yapacagiz. Bunun icin oncelikle JDBC drivera ihtiyacimiz var. Buradan indirebilirsiniz. .exe uzantili olan linki indirip unzipliyoruz. Daha sonra uygun jar file i kullanabiliriz. Ben sqljdbc4.jar i kullandim.

Eclipse de yeni bir proje olusturup sag tiklayarak -> Properties -> Java Build Path kisminda add external jar diyerek indirdigimiz jar i projemize dahil ediyoruz.

Simdi classimizi olusturup kod kismina gecelim.


import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

public class Dbop {

 public static void main(String args[]){
  try{
   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
   System.out.println("Driver loaded");
   
   String server= "localhost\\sqlexpress";
   int port = 1433;
   String user= "TestUser";
   String pass = "123456";
   String db = "ExampleDb";
   
   String jbcUrl = "jdbc:sqlserver://"+ server+ ":"+port+";user="+user+"; password="+pass +"; databaseName="+db+"";
   
   Connection con = DriverManager.getConnection(jbcUrl);
   System.out.println("connection obtained");
   
   Statement stmt = con.createStatement();
   System.out.println("Statement created");
   
   ResultSet rs = stmt.executeQuery("Select Username, Phone from [User]");
   System.out.println("Query executed");
   
   while(rs.next()){
    System.out.println("Username "+ rs.getString(1) + " Phone "+ rs.getString(2));
   }
   rs.close();
   stmt.close();
   con.close();
   
   System.out.println("Resource released");
   
  }catch(Exception ex){
   System.out.println("Error: " + ex);
  }
  
 }
}



ResultSet sonuclari indeks 1 den baslar. O yuzden Username i gostermek icin getString(1) i kullandik. Istersek indeks yerine sutun adini da yazarak verilere ulasabiliriz.

rs.getString("Username") seklinde.

Outputum su sekilde olacak:


Driver loaded
connection obtained
Statement created
Query executed
Username Mary Phone 05348784250
Username John Phone 05987545123
Username Joe Phone 23654178925
Username Peter Phone 78963254101
Resource released



Yararlandigim kaynak burdadir.

11 Temmuz 2017 Salı

Installation failed with message Failed to finalize session : INSTALL_FAILED_INVALID_APK: Split lib_slice_0_apk was defined multiple times. It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing. WARNING: Uninstalling will remove the application data!


I get this error on Android Studio. Because I copied my project to another directory. When I run the project in the directory that I copied from, project run without any error.

If we want to run the project that is in new location, then there are some thing we need to do. From top menu, Build -> Clean Project then Build -> Rebuild Project. Then when we run, we do not get any error.

--------------------------------------------------------------------------------------------------------------------------

Projemi calistirirken Android Studio dan bu sekilde bir hata aldim. Hatayi arastirdigimda buldugum sonuclardan biri benim yasadigim duruma benziyordu. Projemi baska bir lokasyona kopyalamistim. Ve kopyaladigim yerdeki projeyi acinca bu sekilde bir hata aliyordum. Projeyi ilk bulundugu konumdan actigimda ise calistirdigimda hatasiz sekilde calisiyor.

Ancak yeni bulundugu konumdan calistirmak istiyorsak oncelikle ust menude yer alan Build -> Clean Project yapmaliyiz. Daha sonra yine Build -> Rebuild Project yapmaliyiz. Eger hatamiz devam ederse birkac kez tekrar etmeliyiz. Projemiz hatasiz calisacaktir.

8 Temmuz 2017 Cumartesi

ANDROID - SharedPreferences Kullanımı - Using SharedPreferences


Shared Preferences kullanarak uygulama kapansa bile kullanicinin bilgilerini koruyabiliriz. Bu sekilde tekrardan uygulamayi actiginda tekrardan login olmasina gerek olmaz. Bunun icin basit bir uygulama yaptim. Kodlar burada yer almakta. Ekran goruntuleri ise asagidadir.


By using SharedPreferences, even application closes,we can save the user's information. By this way when user again opens the application, there will be no need for user to login again. My code is in here. Screenshots of application is available in below.