1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
Schlagworte:
  1. Matze02, 20.04.2017 #1
    Matze02

    Matze02 Threadstarter Neuer Benutzer

    Hallo comunity!

    Ich habe in eine App mithilfe eines YT-Tutorial die Google-Spracherkennung, welche den gesprochenen Text in ein TextView einfügt, eingebunden. Gestern habe ich zwei Activitys in der App durch das TabLayout zusammengefügt. Nur leider funktioniert das jetzt nicht mehr:

    Code:
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
    
            if(requestCode == SPEAKING_INTENT_REQUEST_CODE && resultCode == RESULT_OK){
                ArrayList<String> speakingResult = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
    
                String finaltext;
                if(editText.getText().length()>0) {
                    finaltext = editText.getText().toString() + " " + speakingResult.get(0);
                } else {
                    finaltext=speakingResult.get(0);
                }
                editText.setText(finaltext);
    
            }
        }
    Hier wird jetzt das RESULT_OK in der ersten if-abfrage nicht mehr erkannt. Davor, als es ich die Activitys noch nicht durch das TabLayout zusammengeführt habe hat es funktioniert.


    Anmerkung: Dieser Code oben ist teil der Fragment1.class Activity. Muss der Code vllt. in die MainActivity??


    MfG
    Matze


    PS: Schonmal Danke im Vorraus für die Hilfe!
     
  2. markus.tullius, 20.04.2017 #2
    markus.tullius

    markus.tullius Android-Lexikon

    Ich weiß jetzt nicht, wie dein Code aufgebaut ist (der vorhandene Code reicht nicht.) Aber ich denke, dass du mit deiner Vermutung recht hast. Ich denke, die andere Activity fängt den Request ab (das ist aber mehr raten, als wissen).
     
  3. Matze02, 21.04.2017 #3
    Matze02

    Matze02 Threadstarter Neuer Benutzer

    Also, der Wichtige teil des Codes:


    MainActivity:
    Code:
    public class MainActivity extends AppCompatActivity{
    
        Toolbar toolbarMainActivity;
    
        ViewPager viewPager;
        TabLayout tabLayout;
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            toolbarMainActivity=(Toolbar)findViewById(R.id.toolbarMainActivity);
            setSupportActionBar(toolbarMainActivity);
            toolbarMainActivity.setTitleTextColor(Color.WHITE);
            toolbarMainActivity.setDrawingCacheBackgroundColor(Color.WHITE);
    
            viewPager=(ViewPager)findViewById(R.id.viewPagerMainActivity);
    
            ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
    
            viewPager.setAdapter(viewPagerAdapter);
    
            tabLayout=(TabLayout)findViewById(R.id.tabLayoutMainActivity);
            tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
            tabLayout.setupWithViewPager(viewPager);
            tabLayout.setTabTextColors(ColorStateList.valueOf(Color.WHITE));
            tabLayout.setSelectedTabIndicatorColor(Color.WHITE);
            tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
                @Override
                public void onTabSelected(TabLayout.Tab tab) {
                    viewPager.setCurrentItem(tab.getPosition());
                }
    
                @Override
                public void onTabUnselected(TabLayout.Tab tab) {
    
                }
    
                @Override
                public void onTabReselected(TabLayout.Tab tab) {
    
                }
            });
        }
    
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.menu, menu);
            return true;
        }
    
        @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();
    
            //noinspection SimplifiableIfStatement
            if (id == R.id.action_settings) {
                startActivity(new Intent(MainActivity.this, Einstellungen.class));
                return true;
            }
    
            return super.onOptionsItemSelected(item);
        }
    
    }
    
    


    Fragment1:
    Code:
    public class Fragment1 extends Fragment implements View.OnClickListener{
    
        View contentView;
    
        EditText editText;
    
        FloatingActionButton fabaudio;
    
        final int SPEAKING_INTENT_REQUEST_CODE = 10;
    
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    
            contentView=inflater.inflate(R.layout.activity_notiz_erstellen, null);
    
    
            return contentView;
        }
    
    
        @Override
        public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    
            editText = (EditText)contentView.findViewById(R.id.editText);
    
            btnsave=(Button)contentView.findViewById(R.id.btnsave);
            btnsave.setOnClickListener(this);
    
            fabaudio=(FloatingActionButton)contentView.findViewById(R.id.fabaudio);
            fabaudio.setOnClickListener(this);
    
    
    
            super.onViewCreated(view, savedInstanceState);
        }
    
        @Override
        public void onClick(View v){
    
            switch (v.getId()){
    
                case R.id.fabaudio:{
                    speaking();
    
                    break;
                }
            }
        }
    
        /*@Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
    
            if(requestCode == SPEAKING_INTENT_REQUEST_CODE && resultCode == RESULT_OK){
                ArrayList<String> speakingResult = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
    
                String finaltext;
                if(editText.getText().length()>0) {
                    finaltext = editText.getText().toString() + " " + speakingResult.get(0);
                } else {
                    finaltext=speakingResult.get(0);
                }
                editText.setText(finaltext);
    
            }
        }*/
    
        private void speaking(){
            Intent speakingIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
            speakingIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault().toString());
            startActivityForResult(speakingIntent, SPEAKING_INTENT_REQUEST_CODE);
        }
    }
    


    ViewPagerAdapter:

    Code:
    public class ViewPagerAdapter extends FragmentPagerAdapter{
    
        String[] tabTitleArray = {"Fragment1", "Fragment2"};
    
        public ViewPagerAdapter(FragmentManager manager){
    
            super(manager);
        }
    
    
        @Override
        public Fragment getItem(int position) {
    
            switch (position){
    
                case 0: return new Fragment1();
                case 1: return new Fragment2();
            }
    
    
            return null;
        }
    
        @Override
        public int getCount() {
            return 2;
        }
    
    
        @Override
        public CharSequence getPageTitle(int position) {
    
            return tabTitleArray[position];
        }
    }
    
     
  4. swa00, 21.04.2017 #4
    swa00

    swa00 Moderator Mitarbeiter

    Hallo Matze

    innerhalb eines Fragments bekommst du kein gültiges ActivityResult ,
    das musst du definitv in der Main machen ( da wo es auch bei dir klappt)

    Ich hatte Ähnliches auch schon mal bei Login-Tokens. (z.b. Spotify)
    Ich habe mir dann die Instanzen ausgetauscht , oder du kannst mit SingleTon arbeiten.

    Das scheint "normal" zu sein
    (Ich war dann zu faul mir den Grund zu suchen )
     
    Matze02 gefällt das.
  5. Matze02, 21.04.2017 #5
    Matze02

    Matze02 Threadstarter Neuer Benutzer

    @swa00 Danke für die Hilfe. Werde es nachher gleich mal ausprobieren!
     
  6. DagobertDokate, 22.04.2017 #6
    DagobertDokate

    DagobertDokate Android-Lexikon

    Oder du baust dir grob so etwas ;)

    Code:
    @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            final Fragment frag = getSupportFragmentManager().findFragmentById(R.id.content);
            if (frag != null) {
                frag.onActivityResult(requestCode, resultCode, data);
            }
    
    lg.
        }
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[OFFEN] Wie kann ich feststellen ob eine SD-Karte migriert wurde Android App Entwicklung Vor 40 Minuten
[OFFEN] App Leitfaden gesucht! Android App Entwicklung Dienstag um 21:17 Uhr
[OFFEN] Welches Intent erzeugt der Klick im Homescreen auf das Icon einer App? Android App Entwicklung Dienstag um 13:59 Uhr
[OFFEN] Logdateien der eigenen App Android App Entwicklung 15.06.2017
[OFFEN] Android Studio Ram voll nach 5h arbeit Android App Entwicklung 15.06.2017
[OFFEN] Gradle: maven-publish abhängigkeiten Android App Entwicklung 12.06.2017
[OFFEN] Xposed Modul ändert keine Integers Android App Entwicklung 11.06.2017
[OFFEN] Problem mit meiner Login App Android App Entwicklung 10.06.2017
[OFFEN] Standby/Screenoff bei bestimmten Funktionen verhindern Android App Entwicklung 09.06.2017
[OFFEN] Android Studio - Code Style Android App Entwicklung 08.06.2017
Du betrachtest das Thema "[OFFEN] Google-Spracherkennung funktioniert nicht im Tablayout" im Forum "Android App Entwicklung",