Edittext intanziieren in MainActivity

P

PaulHerfter

Neues Mitglied
14
Hallo Zusammen,
ich habe da ein, eigentlich einfaches Anfänger Problem UND kann es nicht lösen, wie traurig, ist das denn?
XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingTop="10dp"
    android:paddingLeft="10dp"
    android:orientation="vertical" >

    <!-- Edit Text with Focus on page load -->
    <EditText
        android:id="@+id/editsshPassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Enter your SSpassword"
        android:ems="10" >
        <requestFocus />
    </EditText>

    <!-- Edit Text with Hint & its color -->
    <EditText
        android:id="@+id/editsshuser"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Enter your SSHUserName"
        android:textColorHint="#55000000"
        android:ems="10" />

    <!-- Edit Text with inputType as password, this will not display passwords typed by the user directly  -->
    <EditText
        android:id="@+id/editPassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Enter sshpassword"
        android:textColorHint="#55000000"
        android:ems="10"
        android:inputType="textPassword" />

    <!-- Edit Text with inputType as number, this will provide keypad containing only Numbers  -->
    <EditText
        android:id="@+id/linuxCommand"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="LInux command e.g. uname -a or something like that.or less. eg.or simple uname ."
        android:textColorHint="#55000000"
        android:ems="10"
        android:inputType="text" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Submit"
        android:onClick="btn_clk" />

</LinearLayout>
ist das denn ?
ich habe in meinem Layout ein Editext und will darauf zugreifen. nun das ist ja eigentlich nicht so dramatisch. Aber ich bekomme das in Android Studio nicht instanziiert. ja ihr habt richtig gelesen.
ich kann stelle mal meinen Code ein, dann seht ihr was ich meine. Ich sehe den Wald vor lauter Bäume nicht denke ich mir mal.
Natürlich habe ich mir meinen code und das Layout 1000 Mal angeschaut und nix gefunden und mit meinen freunden darüber gesprochen der ging ein paar mal per Email hin und her.
viele Gruesse
Paul Herfter
Beiträge automatisch zusammengeführt:

Java:
rivate String sshServerMsg;
    private SSHUserOBJ sshUserOBJ = new SSHUserOBJ();
    private SSHOBJ sshobj = new SSHOBJ();
    private final String TAG = MainActivity.class.getCanonicalName();
    private AppBarConfiguration mAppBarConfiguration;
    private boolean permissionCheck;
    public HomeFragment homeFragment = new HomeFragment();
   // private SSHOBJ sshobj= new SSHOBJ();
    private final String TAG_ALTERNATIVE = MainActivity.class.getCanonicalName();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        private (EditText) editSSHPassword= (EditText) findViewById(R.id.editPassword);
      //  createSSHConnection();
        HomeFragment.setMainContext(MainActivity.this);
        HomeFragment homeFragment = new HomeFragment();
        homeFragment.setSSHServerUnameResult(sshobj.getResult());
        homeFragment.setSSHServerUnameResult(sshobj.getResult());
     //   homeFragment.setSSHServerUnameResult(sshobj.getResult());
        HomeFragment.SSHUNAMESSHSRERVERVALUE="SSHUNAMESSHSRERVERVALUE";
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        permissionCheck = AndroidToolbox.checkPermission(MainActivity.this, Manifest.permission.INTERNET);
        //1stWe try to Create a SSHTunnel
        if (permissionCheck) {
            //createSSHConnection();
            if (AndroidToolbox.isNetGPSAvailabe(MainActivity.this)){

                sshobj.setSshhostname("mail.herfter-it.de");
                sshobj.setSshuserName("paul");
                //sshobj.setSshPassword("ImdGm20eB");
                sshobj.setServerCommand("uname -a");
            } else
                Log.v(TAG,sshServerMsg);
                homeFragment.setSSHServerUnameResult(sshobj.getResult());
            try {
                sshServerMsg = sshobj.getResultFromSSHServer("uname -a ");
                sshobj.execute(MainActivity.this,null,MainActivity.this);
              //  sshobj.getResultFromSSHServer("uname -a");
                sshobj.setServerCommand("uname -a");
                sshUserOBJ.setServerCommand("uname -a");
                HomeFragment.SSHUNAMESSHSRERVERVALUE =sshobj.getResult();
                Log.v(TAG,"user Start with version : .......................................................  "+ AndroidToolbox.getVersionCode(MainActivity.this)+" ..Anzahl SSHVerbindungen mit Befehl \nps -aux | grep -i ssh |grep -i wc -l . "+sshobj.getResult());
                if (savedInstanceState == null)
                if (sshServerMsg != null && sshServerMsg.length() >0){
                    Log.v(TAG,sshServerMsg);
                } else {
                    Log.v(TAG,"Nothing to show from ssh Server ");
                }
            } catch (IOException exp){
                exp.printStackTrace();
            } catch (Exception exp){
                exp.printStackTrace();
            }
        }
        HomeFragment.mainContext = MainActivity.this;
        super.onCreate(savedInstanceState);

;        if (savedInstanceState == null) {
            setContentView(R.layout.activity_main);

            Toolbar toolbar = findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            initDrawerStuff(toolbar);
            FloatingActionButton fab = findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //    Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    //       .setAction("Action", null).show();
                    showAlterDialog(MainActivity.this, "Do you really want to close the app \n", "\nDo you really want close these app ?");
                }
            });
        }
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow,R.id.nav_share)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
        findViewById(R.id.editsshuser);
    }
    @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) {
            Log.v(TAG,"und?......................................................"+R.id.drawer_layout);
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    private void initDrawerStuff (Toolbar toolbar){
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);


        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        // updateDrawer(true);
        //  drawer.setOnClickListener(MainActivity.this);
        toggle.syncState();


    }
    @Override
    public boolean onSupportNavigateUp() {
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    }
    private void showAlterDialog(Context context, String AlterTitle, String Altermessage) {

        new AlertDialog.Builder(context)
                .setTitle(AlterTitle)
                .setMessage(Altermessage)

                // Specifying a listener allows you to take an action before dismissing the dialog.
                // The dialog is automatically dismissed when a dialog button is clicked.
                .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        Log.v(TAG, "User pressed Cancel  and closed not the app ");
                        //  Toast.makeText(MainActivity.this, "Nothing Happend. Keep Kalm", Toast.LENGTH_LONG).show();
                        AndroidToolbox.showToast("Nothing will be happend. keep calm please. ", MainActivity.this);
                    }
                })
                .setIcon(android.R.drawable.ic_dialog_alert)
                // A null listener allows the button to dismiss the dialog and take no further action.
                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {

                        // AndroidToolbox.showToast("Nothing will be happend. keep calm please. ", MainActivity.this);
                        AndroidToolbox.closeAndDestroyApp();
                        SSHOBJ.close_ssshSession();

                    }
                })

                .setIcon(android.R.drawable.ic_dialog_alert)
                .show();
    }


    /**
     * This behavior is of course ugly. that i do it, the reason is i'm to lasy to fix it in the ssh class.</br> in the class SSHUsr in the Method the return Value has to be the ssh conection and not to be a boolean</br>
     * @return
     */
    private boolean createSSHConnection () {
        if(SSHOBJ.getSshsession()!= null) {
            SSHUserOBJ sshUserOBJ = new SSHUserOBJ();
            sshUserOBJ.setHost("mail.herfter-it.de");
            sshUserOBJ.setUserName("paul");
            sshUserOBJ.setPassWord(ed);
            sshUserOBJ.setServerCommand("uname -a");
            sshUserOBJ.setServerCommand("uname -a");
            sshUserOBJ.setSSHResultValue(sshUserOBJ.getSSHResultValue());
            Log.v(TAG, sshUserOBJ.getSSHResultValue());
        }
        //String sshServerMsg
        Log.v(TAG, sshServerMsg + "........................................................................");
        return false;
    }

}//End Class
Beiträge automatisch zusammengeführt:

Meine MainActivity
Beiträge automatisch zusammengeführt:

Ach ja hier meine logfile ausgabe. LogCat
XML:
/home/paul/Develop/java/android/YourEsayPaperWork/app/src/main/java/com/paul/youresaypaperwork/MainActivity.java:43: error: illegal start of expression
        private ( EditText ) editSSHPassword= (EditText) findViewById(R.id. editPassword ).toString();
        ^
 
Zuletzt bearbeitet:
Hallo
Du sprichst von EditTexte die nicht instanzirt werde Besser gesagt du nicht darauf zugreifen kannst.
Nur wo in den Code holst du dir diese Instanz. Ich sehe kein findviewbyId auf einer deiner EditTexte.

Zweitens keine statements im Klassen Rumpf bei Android das geht zwar bei Java für Desktop PC aber nicht bei Android.
Variablen definieren im Rumpf als Klassenvariable ja
, aber instanziren zb mit new nein.

Würde dir bestimmt schon gesagt.
Beiträge automatisch zusammengeführt:

PS was machen denn deine freunde wenn sie sich den Code angesehen haben?
Beiträge automatisch zusammengeführt:

Was soll der Variablen Typ in der klammer den cast macht du danach.

Der Typ der Variablen gehört nicht in die klammer.
Schaue nach was ein Typ cast ist.
Und wie ein Variable mit Typ erstellt wird. Java Grundlagen.

Ist in c auch nicht anders.
Beiträge automatisch zusammengeführt:

Außerdem das tostring am ende ist total falsch.
Du willst erstmal die Instanz mehr nicht.
Den Inhalt holst du anders.
Wenn du die Instanz in einen string haben willst wass sinnlos ist dann sollte die Variable der fu das zuweisen willst auch vom Typ string sein. Das sagt dir dein error log?
 
Zuletzt bearbeitet:
Aehmm
jogimuc schrieb:
ch sehe kein findviewbyId auf einer deiner EditText.
Code:
 private ( EditText ) editSSHPassword= (EditText) findViewById(R.id. editPassword ) is in line 43 Main Activity;
Aehmm hier z.B.
Java:
EditText simpleEditText = (EditText) findViewById(R.id.simpleEditText);
Der hier ist von einer Example Seite. und identisch zu meinem code.
 
Zuletzt bearbeitet:
Ja dann lese weiter
Beiträge automatisch zusammengeführt:

Nein ist er nicht Tipp klammer
 
Zuletzt bearbeitet:
jogimuc schrieb:
Zweitens keine stateme
jogimuc schrieb:
Was soll der Variablen Typ in der klammer den cast macht du danach.

nts im Klassen Rumpf bei Android das geht zwar bei Java für Desktop PC aber nicht bei Android.
Also ich Caste ja Auf EditText und erwarte hier ein Object vom Type Editext seit wann geht das nicht bei Android und dazu verwende ich sehr wohl findByid().Zeile 43 MainActivity Damit habe ich dann ein Object mit allen Eigenschaften von Editext auch text und damit auch ein StringValue.
Beiträge automatisch zusammengeführt:

jogimuc schrieb:
Hallo
Du sprichst von EditTexte die nicht instanzirt werde Besser gesagt du nicht darauf zugreifen kannst.
Nur wo in den Code holst du dir diese Instanz. Ich sehe kein findviewbyId auf einer deiner EditTexte.

Zweitens keine statements im Klassen Rumpf bei Android das geht zwar bei Java für Desktop PC aber nicht bei Android.
Variablen definieren im Rumpf als Klassenvariable ja
, aber instanziren zb mit new nein.

Würde dir bestimmt schon gesagt.
Beiträge automatisch zusammengeführt:

PS was machen denn deine freunde wenn sie sich den Code angesehen haben?
;-) nun Sie haben da wohl nicht genau geschaut, denke ich mir mal.
Beiträge automatisch zusammengeführt:



Der Typ der Variablen gehört nicht in die klammer.
Schaue nach was ein Typ cast ist.
Und wie ein Variable mit Typ erstellt wird. Java Grundlagen.
Ich sehe kein findviewbyId auf einer deiner EditTexte.
Ist in c auch nicht anders.
Beiträge automatisch zusammengeführt:

PaulHerfter schrieb:
Was soll der Variablen Typ in der klammer den cast macht du danach.

Ich sehe kein findviewbyId auf einer deiner EditTexte.

Wie ?? in der Zeile 43 ist doch ein findById ...
und ich deklariere ein Editext Objekt ordentlich und caste es auch richtig, das sollte wohl gehen. Aber ich mache da einen Fehler den ich nicht bemerke. Sicherlich Grundlagen, das macht mich ja so verrückt, das ich den nicht sehe. ich habe solche Abeiten gefhuehlt schon hundert Mal gemacht und jetzt so was.
Du willst erst mal die Instanz mehr nicht.
sollte durch den Cast gelöst werden.
Den Inhalt holst du anders.
ja ist mir bewusst.
Wenn du die Instanz in einen string haben willst wass sinnlos ist dann sollte die Variable der fu das zuweisen willst auch vom Typ string sein. Das sagt dir dein error log?
Beiträge automatisch zusammengeführt:

PaulHerfter schrieb:
Beiträge automatisch zusammengeführt:

jogimuc schrieb:
Außerdem das tostring am ende ist total falsch
ja ist mir auch bewust, das ist aber nicht der Grund warum das Casting überhaupt nicht funktioniert.
 
Zuletzt bearbeitet:
Du bringst wider alles durcheinander.

Wie ?? in der Zeile 43 ist doch ein findById ...
und ich deklariere ein Editext Objekt ordentlich und caste es auch richtig, das sollte wohl gehen. Aber ich mache da einen Fehler den ich nicht bemerke. Sicherlich Grundlagen, das macht mich ja so verrückt, das ich den nicht sehe. ich habe solche Abeiten gefhuehlt schon hundert Mal gemacht und jetzt so was.

Nein du erstellt kein ordentliches EditText Objekt. Der Typ gehört nicht in eine Klammer, beim definiren einer Variablen .
Beiträge automatisch zusammengeführt:

Mal noch etwas wenn du mit Zitaten arbeitest. Dann bitte nur das Zitat in den Block. Und nicht deine Antwort auch als Zitat.
Wurde dir auch schon gesagt. Ja und wir wissen das du Krank bist. Aber so etwa sollte klappen. Wenn du das nicht am Handy kannst, mach es am PC. Geht das auch nicht dann lass besser komplett. Warte bis es dir besser geht.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: ludy
(EditText) findViewById(R.id.editText1)
Wird nur TextView t = (TextView)ctx.findViewById(R.id.hello_text); Hier am beispiel vom TextView.
überall so beschrieben. Darum macht es mich ja so nervös . ich kenne das casten auch nicht anders. Als das der objecktTyp in die Klammer gehört.
 
Ja jetzt schreibst du es richtig. In deinem Code nicht. Da hast du zwei Klammern.

Das ist dein Code
Code:
private (EditText) editSSHPassword= (EditText) findViewById(R.id.editPassword);


die erste Klammer muss weg.
Code:
private EditText editSSHPassword= (EditText) findViewById(R.id.editPassword);
Beiträge automatisch zusammengeführt:

So große Preisfrage was ist der "Typ" und was ist der "VariablenName" und was ist ein "Typ cast"
 
Zuletzt bearbeitet:
Hallo zu dem Thema Statements im Klassen Rump.

Da hast du einiges durcheinandergebracht. Dabei meinte ich nicht den EditText.

Sondern die Erstellung und Initialisierung am Anfang deines Codes. So wie es in deinen code aussieht sind die nicht in einer Methode, sondern im Kassen Rump. Keine lokalen sondern Klassenvariablen. Und dazu habe ich das gesagt.

Zweitens keine Statements im Klassen Rumpf bei Android das geht zwar bei Java für Desktop PC aber nicht bei Android.
Variablen definieren im Rumpf als Klassenvariable ja , aber Instanzieren zb mit new nein.

Das ist ein anderes „zweites“ Thema, was du in deinen Antworten durcheinander bringst.


Es geht um diesen Bereich aus deinem Code.
Code:
rivate String sshServerMsg;
    private SSHUserOBJ sshUserOBJ = new SSHUserOBJ();
    private SSHOBJ sshobj = new SSHOBJ();
    private final String TAG = MainActivity.class.getCanonicalName();
    private AppBarConfiguration mAppBarConfiguration;
    private boolean permissionCheck;
    public HomeFragment homeFragment = new HomeFragment();
   // private SSHOBJ sshobj= new SSHOBJ();
    private final String TAG_ALTERNATIVE = MainActivity.class.getCanonicalName();

Das ist im Klassenrumpf und dort sind Statements wie

"private SSHUserOBJ sshUserOBJ = new SSHUserOBJ();"

nicht richtig bei Android, bei Standard Java PC geht so etwas, hier nicht.
das Definieren ,Erstellen der Variablen im Rump Ja.

"private SSHUserOBJ sshUserOBJ;"

das Setzen, Instanziieren, Wertzuweisen der Variablen gehört bei Android in die onCreate.

"shUserOBJ = new SSHUserOBJ();"

Ja das ist etwas mehr Schreibarbeit ist aber bei Android nun mal so.

PS das Trift natürlich auch auf die anderen Klassen Variablen zu nicht nur die eine.
 
Zuletzt bearbeitet:
PaulHerfter schrieb:
@Override
protected void onCreate(Bundle savedInstanceState) {
private (EditText) editSSHPassword= (EditText) findViewById(R.id.editPassword);

Der Code dürfte eigentlich noch nicht mal compilieren. private kannst du im Methodenrumpf nicht benutzen und wie jogimuc sagt müssen die Klammern um den Typ weg.

Du darfst auch findViewById erst aufrufen nachdem das Layout gesetzt ist. (setContentView) das passiert bei dir relativ spät.
Auch sollte das super.onCreate() immer als erstes kommen. Es ist zwar prinzipiell auch anders möglich, aber kann zu komischem Verhalten führen.

jogimuc schrieb:
Es geht um diesen Bereich aus deinem Code.
Code:
rivate String sshServerMsg;
    private SSHUserOBJ sshUserOBJ = new SSHUserOBJ();
    private SSHOBJ sshobj = new SSHOBJ();
    private final String TAG = MainActivity.class.getCanonicalName();
    private AppBarConfiguration mAppBarConfiguration;
    private boolean permissionCheck;
    public HomeFragment homeFragment = new HomeFragment();
   // private SSHOBJ sshobj= new SSHOBJ();
    private final String TAG_ALTERNATIVE = MainActivity.class.getCanonicalName();

Das ist im Klassenrumpf und dort sind Statements wie

"private SSHUserOBJ sshUserOBJ = new SSHUserOBJ();"

nicht richtig bei Android, bei Standard Java PC geht so etwas, hier nicht.
das Definieren ,Erstellen der Variablen im Rump Ja.

"private SSHUserOBJ sshUserOBJ;"

das Setzen, Instanziieren, Wertzuweisen der Variablen gehört bei Android in die onCreate.

"shUserOBJ = new SSHUserOBJ();"

Ja das ist etwas mehr Schreibarbeit ist aber bei Android nun mal so.

Sorry, aber das ist Quatsch. Das ist bei Android genau so möglich wie bei Java auch.
 

Ähnliche Themen

A
Antworten
0
Aufrufe
733
Arif12
A
D
  • Duckemai
Antworten
3
Aufrufe
1.627
swa00
swa00
S
  • Sasusi
Antworten
0
Aufrufe
1.246
Sasusi
S
Zurück
Oben Unten