10 Nisan 2019 Çarşamba

Context initialization failed Hatasi

Pluralsight ta yer alan Spring eğitimini yapmaya calisirken ilk örnekte Server loglarinda asagidaki hatayi aldim.
 
SEVERE: Context initialization failed
java.lang.IllegalArgumentException
SEVERE: StandardWrapper.Throwable
java.lang.IllegalArgumentException
SEVERE: Allocate exception for servlet fitTrackerServlet
java.lang.IllegalArgumentException
 
 
Tomcat v8.0 kullaniyordm
 
Yardim aldgim link asagidaki gibidir. 
 
https://stackoverflow.com/questions/32416540/http-status-500-servlet-init-for-servlet-fittrackerservlet-threw-exception
 
jdk
 
Tomcat v7.0 kurmak yerine Pom.xml deki versionlari asagidaki gibi değiştirdim.
 
<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>3.2.3.RELEASE</version>
    </dependency>        
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>3.2.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>3.2.3.RELEASE</version>
    </dependency>

ANDROID JSOUP

Merhaba,
Bu yazimdan Jsoup kullanimi ile ilgili ornek yapacagim.
Oncelikle Jsoup nedir kisaca ondan bahsedelim. Jsoup html parse eden yani ayristiran bir java kutuphanesidir. Jsoup ile html sayfalarindan css elemanlarini kullanarak veri cekebilir ve bu verileri uygulamamiz icinde kullanabiliriz.

Dezavantaji ise web sitesinin html elemanlarinda degisiklik yapildiginda istedigimiz veriyi cekemeyebiliriz.

Oncelikle ilk adim olarak build.gradle a jsoup u ekleyelim.

compile 'org.jsoup:jsoup:1.11.3'



Simdi de Manifest e gidip internet izni verelim cunku uygulamamiz internetten veri cekecek.

Simdi layoutumuza bir buton koyalim ve o butona tiklandiginda http://sengamze.blogspot.com/2019/04/android-resim-ekleme.html
bu linkte yer alan yazimin basligini ekrana yazdirsin.

package gykizmir.com.jsoupexample;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

import java.io.IOException;


public class MainActivity extends AppCompatActivity {

    Button learnTitleBtn;
    TextView titleOfBlog;

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

        titleOfBlog = (TextView) findViewById(R.id.learnTitle);

        learnTitleBtn = (Button) findViewById(R.id.learnTitle);

        learnTitleBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Title().execute();
            }
        });


    }

    private class Title extends AsyncTask<Void, Void, Void>{

        String url = "http://sengamze.blogspot.com/2019/04/android-resim-ekleme.html";
        String title;
        ProgressDialog progressDialog;

        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setTitle("Jsoup Example");
            progressDialog.setMessage("Title is retrieving");
            progressDialog.setIndeterminate(false);
            progressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            try {
                Document document = Jsoup.connect(url).get();
                title = document.title();
            } catch (IOException ex){
                ex.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(Void avoid){
            titleOfBlog.setText(title);
            progressDialog.dismiss();
        }
    }

}




layoutumuz ise asagidaki gibi olmali.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="gykizmir.com.jsoupexample.MainActivity">

    <Button
        android:id="@+id/learnTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Learn Title"/>


    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="Title" />


</LinearLayout>




Calistirdigimizda ise ekran goruntusu asagidaki gibidir.

          

4 Nisan 2019 Perşembe

Android - Move layouts up when keyboard is shown

Android uygulamalarimizda ekranimizdaki ogeler ekrani kapliyorsa o ekranda klavey acildiginda itemlerin bazilari klavyenin altinda kalir. Bu durumda ilgili edittex secildiginde o layout yukari tasinir ve ilgili item in gorunmesi saglanir.

Bunu yapmamizi saglayan kod parcasi ve nasil yapilcagi asagidadir.

Activity nin onCreate() methoduna alttaki kod yapistirilir.

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

3 Nisan 2019 Çarşamba

Android Resim Ekleme

Merhaba,
Bir android projesi olusturdugumuzda android icinde var olan resimleri nasil ekleriz onu anlatacagim.
File -> New -> Vector Asset diyoruz ve ekrana gelen icon listesinden birini seciyoruz.


Daha sonra layoutlarda @drawable altindan ekledigimiz dosya adini veriyoruz.


<item    android:id="@+id/navigation_diet"    
android:icon="@drawable/ic_room_service_black_242dp" 
 android:title="@string/title_diet" />


24 Mart 2019 Pazar

Android - R gives error - R leri gormeme hatasi

Merhaba,
Eger android studio da yeni bir proje olusturdugumuzda R kirmizi oluyor ve hata veriyorsa

FILE -> Invalidate Cache and Restart diyerek editorumuzu yeniden baslatirsak sorun cozuluyor.

Iyi calismalar 😊

GELECEĞİ YAZAN KADINLAR PROJESİ

Merhaba,
Bugun benim de bir parcasi oldugum projeden bahsetmek istiyorum. Turkcell kadinlar icin Android egitimi duzenliyor. Sinif ici / online egitim verip daha sonra bir proje gelistirmelerini istiyor, ve basarili olan kadinlari bir cok odul bekliyor. Hem projelerine destek alabiliyor hem is imkanlarina sahip oluyorlar hem de teknolojinin en guzel inceliklerini ogrenip bir proje gelistirebiliyorlar.

2017 yilinda ben de ogrenci olarak bu projeye basvurmustum ve haziran - temmuz aylarinda egitimlerimi almistim. O zaman universiteden mezun olmus, ise baslayacagim Eylul ayina bostum ve o boslugumu boyle bir surecle degerlendirmistim.

Ve artik eminim ki zamanimi degerlendirme seklim cok guzel bir yontemmis. Cunku hem android ogrendim ve bir proje gelistirdim hem de yari finale katilma hakki kazanmistim. Projeme buradan ulasabilirsiniz.

Kendi kendime de cok guzel seyler basarilara imza atabilecegimi kanitlamis oldum 😏

Daha sonra Turkcell benimle iletisime gecip bu sene projenin tekrar duzenlecegini ve egitmen olmami teklif etti. Tabiki bu teklife atladim. Cunku bu projeden ben yararlandiysam ben bir seyler ogrendiysem bunu diger insanlarla da paylasmaliyim ki onlar da yararlansin, hem de ulkemizde kadinlarimiz her alanda aktif olsun ☺

Kabul eden egitmen adayi arkadaslarimizla birlikte Turkcell in daveti uzerine Istanbul a gittik. Burada hem surec hakkinda bilgi edindik hem de ekipce bir proje gelistirdik. O projeme de buradan ulasabilirsiniz.

Daha sonra da Izmir Turkcell Plaza da katilimcilara gun boyu suren bir Java egitimi verdik.

Simdi ise Android egitimleri ile devam ediyoruz. Her sey gibi bilgi de paylastikca guzel ve degerli 😊😊😊😊








23 Mart 2019 Cumartesi

ANDROID - FINE LOCATION VE COARSE LOCATION FARKI

Android de uygulamamiz eger konuma erisme ihtiyaci duyuyorsa o zaman AndroidManifest ten konum erisimine izin vermemiz gerekir.

2 izin tipinin farkindan bahsedecegim:


1. The Fine location provides better and accurate locations.

Requires permission,

ACCESS_FINE_LOCATION

<uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” />

It gives permission for using both GPS_PROVIDER and NETWORK_PROVIDER

or  GPS_PROVIDER only for determining the position.

2. The Coarse location provides less accurate locations.

Requires permission,

ACCESS_COARSE_LOCATION

<uses-permission android:name=”android.permission.ACCESS_COARSE_LOCATION” />

It gives permission for using both NETWORK_PROVIDER only for determining the position.