Помош за изработка на Андроид Апликација

Дискусија во форумот 'Програмирање на мобилни платформи' започната од aleksandar.divitarov, 4 Февруари 2018.

  1. прашав и на stackoverflow добив одговор со овај код да пробам


    Код:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(...);
    
       // Get the intent that started this activity
       Intent intent = getIntent();
       // Get the original QR code data
       String data = intent.getData().toString();
       // Extract the exercise id and use it
       String dataArgs = data.replace("gymassistant://", "");
       switch(dataArgs) {
           case "exercise1":
               //show exercise1 related view
               break;
           case "exercise2":
               //show exercise2 related view
               break;
           //ETC
       }
    }
    ама апликацијата крашнува со ова така да незнам друг начин
     
  2. @stevo15 @Futurelakimens

    Код:
            Intent intent = getIntent();
            if (intent!=null && intent.getData() !=null){
                Toast.makeText(this, "Test", Toast.LENGTH_LONG).show();
            }
    Стигнав до ниво каде кога ќе се скенира qr код да се прикаже некој тоаст е сега незнам како да направам вежбата да ја прикажи

    Вежбите се напишани во посебна класа не се во MainActivity

    Еве како изгледа цел ListExercises.java

    Код:
    package com.bilderi.rahmance.aleksandar.gymassistant;
    
    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    import android.widget.Adapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    import com.bilderi.rahmance.aleksandar.gymassistant.Adapter.RecyclerViewAdapter;
    import com.bilderi.rahmance.aleksandar.gymassistant.Model.Exercise;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class ListExercises extends AppCompatActivity {
    
        List<Exercise> exerciseList = new ArrayList<>();
        RecyclerView.LayoutManager layoutManager;
        RecyclerView recyclerView;
        RecyclerViewAdapter adapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_list_exercises);
    
            initData();
    
            recyclerView = (RecyclerView) findViewById(R.id.list_ex);
            adapter = new RecyclerViewAdapter(exerciseList,getBaseContext());
            layoutManager = new LinearLayoutManager(this);
            recyclerView.setLayoutManager(layoutManager);
            recyclerView.setAdapter(adapter);
        }
    
    
        private void initData() {
            exerciseList.add(new Exercise(R.drawable.bench,"Bench Press", "Lie on the flat bench with your eyes under the bar then Put your pinky on the ring marks of your bar,Take a big breath and unrack the bar by straightening your arms 4.Lower it to your mid-chest while tucking your elbows 75° and Press the bar from your mid-chest to above your shoulders."));
            exerciseList.add(new Exercise(R.drawable.inclinebenchpress,"Incline Bench Press", "Position your body on an incline bench on a 30-45 degree angle.. 2.Grab a barbell with an overhand grip that's shoulder-width apart 3.Hold it above your chest. Extend arms upward, locking out elbows. 4.Lower the bar straight down in a slow, controlled movement to your chest. . 5.Pause, then press the bar in a straight line back up to the starting position."));
            exerciseList.add(new Exercise(R.drawable.declinebenchpress,"Decline Bench Press", "Secure your legs at the end of the decline bench 2.Using a medium width grip 3.As you breathe in, come down slowly until you feel the bar on your lower chest. 4.After a second pause, bring the bar back to the starting position as you breathe out 5.Repeat the movement for the prescribed amount of repetitions."));
            exerciseList.add(new Exercise(R.drawable.declinedumbell,"Decline Dumbell", "Lie on the flat bench with your eyes under the bar then Put your pinky on the ring marks of your bar,Take a big breath and unrack the bar by straightening your arms 4.Lower it to your mid-chest while tucking your elbows 75° and Press the bar from your mid-chest to above your shoulders."));
            exerciseList.add(new Exercise(R.drawable.dumbellflys,"Dumbell Flys", "Lie on the flat bench with your eyes under the bar then Put your pinky on the ring marks of your bar,Take a big breath and unrack the bar by straightening your arms 4.Lower it to your mid-chest while tucking your elbows 75° and Press the bar from your mid-chest to above your shoulders."));
    
    
    
        }
    }
    
    Како би можел да ги повикам од ListExercises до MainActivity?
     
  3. stevo15

    stevo15
    Gaining Experience

    220
    165
    17 Септември 2012
    Машко
    Дали ќе можиш детално да кажиш шо сакаш да постигниш ? Оти ништо не разбирам.
     
  4. Вака значи во List Exercises Activity се наогаат вежбите со слика,текст и објаснување е сега сакам да направам QR код кој кога ќе го скенираш да ја отвори пример бенч да речиме со друг код да отвори за грб вежби да речиме....
     
  5. stevo15

    stevo15
    Gaining Experience

    220
    165
    17 Септември 2012
    Машко
    Тогаш ти треба + идентификатор кај вежбите за да можиш да ги филтрираш односно да знајш кој вежби да ги прикажиш за кој код.
     
  6. Futurelakimens

    Futurelakimens
    Gaining Experience

    176
    80
    12 Април 2017
    Машко
    Не ти се совпаѓа ова што го зборуваш со тоа што е во апликацијата, во апликацијата имаш посебно Activity за List и View. Ако View ти е фрагмент, тогаш би било многу полесно да го направиш тоа што го сакаш, затоа што фрагментот може да чита податоци од неговата "мајка" Activity, а Активити од Активити неможе затоа што може да има само една Активити што работи во еден момент.

    Активити може да префрли податоци на друга активити што ќе стартува, но тоа не ти е ефикасно, бидејќи листата ти е на една активити а прегедот на друга, би било бавно ако така го направиш тоа. Затоа најдобро би било, ViewExercise да го направиш как Fragment.

    Без правење фрагменти треба да го читаш QR кодот, да отвара ListExercice, читаш
    Код:
    intent.getExtras() и после го правиш тоа што се дешава на onClick на recyclerView:
    Intent intent = new Intent(context, ViewExercise.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra("image_id",exerciseList.get(position).getImage_id());
    intent.putExtra("name",exerciseList.get(position).getName());
    intent.putExtra("description",exerciseList.get(position).getDescription());
    Пошо ти се фиксни вежбите, може QR кодот да ја кажува позицијата во листата, пример за бенч би било 0 и наместо get(position) ќе пишеш get(QR).. Неможам да објавам код, бидејќи неможам да тестирам, неам УСБ кабел...
     
  7. дали можиш да ми кажиш како да го конвертирам од Activity во Fragment? и каде да го вметнам горниот код? и како да го напишам тоа со getQR
     
    Изменето од модератор: 10 Февруари 2018
  8. Futurelakimens

    Futurelakimens
    Gaining Experience

    176
    80
    12 Април 2017
    Машко
    Неможеш да конвертираш од Активити во фрагмент, треба одново да правиш.
    Кодот што го напишав е за како што ти е сега, без фрагмент, и не е само да го вметнеш, треба да знаеш како..
    После читање QR код правиш интент за да стартуваш ListExercise, кодот го ставаш како екстра во интентот, од ListExercise, getIntent(), getExtra(x,x) и после
    Код:
    intent.getExtras()
    Intent intent = new Intent(context, ViewExercise.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra("image_id",exerciseList.get(position).getImage_id());
    intent.putExtra("name",exerciseList.get(position).getName());
    intent.putExtra("description",exerciseList.get(position).getDescription());
    position би го добил на некој начин од QR кодот, или направи на друг начин да ги чита вежбите.

    Ти изгледа појма немаш, а сакаш на натпревар да одиш. Ние може да ти помогнеме, но нема да ти ја правиме цела апликација. Има доволно туторијали на интернет, научи прво, после на натпревар.
     
  9. имам 16 години толку знам
    никој не рече да ми ја правите цела апликација...за да научам првин треба да ми покажи некој....вака објаснато не разбирам што како и каде да ставам...а туторијал нема ако имаше немаше ни да барам помош
     
  10. stevo15

    stevo15
    Gaining Experience

    220
    165
    17 Септември 2012
    Машко
  11. Futurelakimens

    Futurelakimens
    Gaining Experience

    176
    80
    12 Април 2017
    Машко
    Јас не сум бил ни на факултет ни на курс, има многу туторијали на интернетов:
    The Complete Android N Developer Course | Udemy - Кошта 900 денари

    View: https://www.youtube.com/watch?v=QAbQgLGKd3Y&list=PL6gx4Cwl9DGBsvRxJJOzG4r4k_zLKrnxl
    - За беспари
     
  12. Почнав да ја правам Апликациајта наново секоај вежба ке биде напишана во различен Fragment дали така би работело тоа со QR кодот?
     
  13. Futurelakimens

    Futurelakimens
    Gaining Experience

    176
    80
    12 Април 2017
    Машко
    Ќе направиш класа како што имаш сега и ќе направиш Array од сите вежби. Фрагментот може да чита податоци од Активити, така да во врска од тоа какви податоци добива од QR кодот може да отвори вежбата што е барана.
     
  14. како да иплементирам сега qr код скенер бидејќи сега користам fragments наместо Activity

    Еве порано како изледаше кодот за СКЕНЕРОТ ВО МАИН АКТИВИТУ


    Код:
    package com.bilderi.rahmance.aleksandar.gymassistant;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    import com.github.amlcurran.showcaseview.ShowcaseView;
    import com.github.amlcurran.showcaseview.targets.ActionViewTarget;
    import com.google.zxing.Result;
    import com.google.zxing.integration.android.IntentIntegrator;
    import com.google.zxing.integration.android.IntentResult;
    
    public class MainActivity extends AppCompatActivity {
        Button btnExercises,btnSetting,scan_btn;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            scan_btn = (Button) findViewById(R.id.scan_btn);
            final Activity activity =this;
            scan_btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    IntentIntegrator integrator = new IntentIntegrator(activity);
                    integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
                    integrator.setPrompt("Scan");
                    integrator.setCameraId(0);
                    integrator.setBeepEnabled(false);
                    integrator.setBarcodeImageEnabled(false);
                    integrator.initiateScan();
    
                }
            });
            btnExercises = (Button)findViewById(R.id.btnExercises);
            btnExercises.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                  Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                  startActivity(intent);
    
                }
            });
        }
    
    
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
            if(result != null) {
                if(result.getContents() == null) {
                    Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
                } else {
                    Uri url = Uri.parse(result.getContents());
                    Intent i = new Intent(Intent.ACTION_VIEW);
                    i.setData(url);
                    startActivity(i);
                }
            } else {
                super.onActivityResult(requestCode, resultCode, data);
            }
        }
    
    }
    и имав ставено дугме во activity_main.xml
    и кога ќе го притиснев се отвораше скенерот

    е сега ова како да го изведам бидејќи користам fragments исто така на апликацијата му имам ставено Navigation Drawer

    пробав кодот истиот пак да го ставам во Main Activity и да ставам scan буттон во нов фрагмент но не сакаше така....

    Е сега незнам како да направам кога ќе го пристиснам ова Scan Qr Code (Vidi slika) да го отвори скенерот 28053590_1825867264090440_43998575_n.png
     
  15. Futurelakimens

    Futurelakimens
    Gaining Experience

    176
    80
    12 Април 2017
    Машко
    Треба да направиш инстанца од Активити во Фрагментот.
    MainActivity act = (MainActivity)getActivity();
    или(одамна не сум програмирал)
    Context act = getActivity();
    Методот што е закачен за копчето ќе го направиш Публиц и ќе го повикаш од фрагментот:
    act. Еве го кодот што треба да го направиш како Публиц метод:
    Код:
    IntentIntegrator integrator = new IntentIntegrator(activity);
                    integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
                    integrator.setPrompt("Scan");
                    integrator.setCameraId(0);
                    integrator.setBeepEnabled(false);
                    integrator.setBarcodeImageEnabled(false);
                    integrator.initiateScan();
    После од фрагментот можеш:
    act.Scan() или како и да го крстиш методот.
     
  16. готово средено тоа како да го поврзам сега qr код со fragment да отвори
     
  17. Futurelakimens

    Futurelakimens
    Gaining Experience

    176
    80
    12 Април 2017
    Машко
    Фрагментот се отвара со

    Код:
    FragmentManager fran = getFragmentManager();
    fran.beginTransaction.add(container, fragment).commit();
    
    Во фрагментот:
    Код:
    if(QR.equals("XXX")){
    ImageView.setImageResource(R.drawable.XXX);
    TextView.setText("XXXX");
    }
    
    За секој следен фрагмент правиш .replace наместо .add
     
  18. каде да го ставам ова?

    Sent from my idol3 using Tapatalk
     
  19. Futurelakimens

    Futurelakimens
    Gaining Experience

    176
    80
    12 Април 2017
    Машко
    Кај што ти треба, ти напишав како се отвара, ти од каде сакаш можеш да го отвориш.
     
  20. не треба ништо да додадам во MainActivity?
     
  21. Futurelakimens

    Futurelakimens
    Gaining Experience

    176
    80
    12 Април 2017
    Машко
    Мислам дека јасно ти е дека треба да го декларираш фрагментот и контејнерот.

    View: https://www.youtube.com/watch?v=dQ6uc__qP-g
     
  22. ова го знам..погорнив код не го разбирам некако....

    еве дел од кодот

    Android Manifest
    Код:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.hristijan.aleksandar.gymworkout.gymworkout">
    
    
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".Splashscreen"
            android:label="@string/app_name"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter android:label="@string/app_name">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="gymassistant" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
    
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    
        <activity android:name="com.journeyapps.barcodescanner.CaptureActivity"
            android:screenOrientation="fullSensor"
            tools:replace="screenOrientation" />
        <activity android:name=".BmiActivity" />
        <activity android:name=".QrActivity"></activity>
    </application>
    QRActivity
    Код:
    package com.hristijan.aleksandar.gymworkout.gymworkout;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    import com.google.zxing.integration.android.IntentIntegrator;
    import com.google.zxing.integration.android.IntentResult;
    
    public class QrActivity extends AppCompatActivity {
    Button scan_btn;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_qr);
        scan_btn = (Button) findViewById(R.id.scan_btn);
        final Activity activity =this;
        scan_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                IntentIntegrator integrator = new IntentIntegrator(activity);
                integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
                integrator.setPrompt("Scan");
                integrator.setCameraId(0);
                integrator.setBeepEnabled(false);
                integrator.setBarcodeImageEnabled(false);
                integrator.initiateScan();
    
            }
        });
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if(result != null) {
            if(result.getContents() == null) {
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
            } else {
                Uri url = Uri.parse(result.getContents());
                Intent i = new Intent(Intent.ACTION_VIEW);
                i.setData(url);
                startActivity(i);
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
    }
    MainActivity

    Код:
    package com.hristijan.aleksandar.gymworkout.gymworkout;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Handler;
    import android.support.v4.app.FragmentTransaction;
    import android.os.Bundle;
    import android.support.design.widget.FloatingActionButton;
    import android.support.design.widget.Snackbar;
    import android.view.View;
    import android.support.design.widget.NavigationView;
    import android.support.v4.view.GravityCompat;
    import android.support.v4.widget.DrawerLayout;
    import android.support.v7.app.ActionBarDrawerToggle;
    import android.support.v7.app.AppCompatActivity;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.widget.Button;
    import android.widget.Toast;
    
    import com.google.zxing.integration.android.IntentIntegrator;
    import com.google.zxing.integration.android.IntentResult;
    
    public class MainActivity extends AppCompatActivity
            implements NavigationView.OnNavigationItemSelectedListener {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
    
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            drawer.addDrawerListener(toggle);
            toggle.syncState();
    
            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
    
            FirstFragment fragment = new FirstFragment();
            FragmentTransaction fragmentTransaction  = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.frame,fragment,"fragment");
            fragmentTransaction.commit();
    
    
    
        }
    
        @Override
        public void onBackPressed() {
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            if (drawer.isDrawerOpen(GravityCompat.START)) {
                drawer.closeDrawer(GravityCompat.START);
            } else {
                super.onBackPressed();
            }
        }
    
    
    
        @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();
    
    
            return super.onOptionsItemSelected(item);
        }
    
        @SuppressWarnings("StatementWithEmptyBody")
        @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            // Handle navigation view item clicks here.
            int id = item.getItemId();
    
            if (id == R.id.first_fragment) {
                setTitle("Home");
                FirstFragment fragment = new FirstFragment();
                FragmentTransaction fragmentTransaction  = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.frame,fragment,"bench");
                fragmentTransaction.commit();
            } else if (id == R.id.second_fragment) {
                setTitle("Bench Press");
                SecondFragment fragment = new SecondFragment();
                FragmentTransaction fragmentTransaction  = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.frame,fragment,"new1");
                fragmentTransaction.commit();
            } else if (id == R.id.third_fragment) {
                setTitle("Incline Bench Press");
                ThirdFragment fragment = new ThirdFragment();
                FragmentTransaction fragmentTransaction  = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.frame,fragment,"new2");
                fragmentTransaction.commit();
            } else if (id == R.id.blank_fragment) {
                setTitle("About");
                BlankFragment fragment = new BlankFragment();
                FragmentTransaction fragmentTransaction  = getSupportFragmentManager().beginTransaction();
                fragmentTransaction.replace(R.id.frame,fragment,"new2");
                fragmentTransaction.commit();
            } else if (id == R.id.bmi_calculator) {
                setTitle("Bmi Calculator");
                Intent i = new Intent(MainActivity.this,BmiActivity.class);
                startActivity(i);
            } else if (id == R.id.qr_activity) {
                setTitle("Scan QR Code");
                Intent i = new Intent(MainActivity.this,QrActivity.class);
                startActivity(i);
            }
    
    
            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            drawer.closeDrawer(GravityCompat.START);
            return true;
        }
    
    }
     
  23. Futurelakimens

    Futurelakimens
    Gaining Experience

    176
    80
    12 Април 2017
    Машко
    Код:
    if(QR.equals("XXX")){
    ImageView.setImageResource(R.drawable.XXX);
    TextView.setText("XXXX");
    }
    Ова ли не го разбираш? Со Иф Елсе ќе си помагаш за да лоадриаш слики и текст во врска со тоа кој QR код е скениран.
     
  24. готово средив
     
  25. Futurelakimens

    Futurelakimens
    Gaining Experience

    176
    80
    12 Април 2017
    Машко
    Се си работи како што треба?Ако да, пиши кога ќе ја објавиш.
     

Сподели