Hilfe bei meiner ersten App

  • 15 Antworten
  • Letztes Antwortdatum
tbremer19

tbremer19

Stamm-User
311
Hi,
ich bin ganz neu in der Android Entwicklung und wollte mal mit einem kleinen Projekt anfangen. Es geht um eine App mit zwei Activities. In der Main Activity befindet sich ein Button, wenn man den klickt, soll man zur zweiten Activity kommen, die ein WebView zeigt.
Nun zeigt mir eclipse immer an: ... cannot be resolved or is not a field
lXg4emi.png

kigueCk.png


Was kann man da machen?
 
Ist Dein main vielleicht ein activity_main?
Schau mal nach bei res > layout.
 
Zuletzt bearbeitet:
Ich habe es auch schon mit activity_main versucht, der selbe Fehler
 
Wie heisst denn die xml-Datei und ist diese fehlerfrei?
Sind alle res-Dateien fehlerfrei?
 
Ja alle sind fehlerfrei und die XML heißt main.xml
 
Du musst die Android.R mal oben entfernen, bei dem Source Code.

Gesendet von meinem HTC One mit der Android-Hilfe.de App
 
Hi,

weiß nicht was Eclipse seit dem neusten Update - also die Android SDK - hat, aber bei mir kommt auch immer der scheiß "R is missing" fehler -.-'

Die Lösung ist realtiv einfach:
Als erstes entfernst du ganz oben bei "import" das android.R.
Dann entfernst du alles im Code, wo "R" vorkommt. (Du kannst auch alle R's auskommentieren, reicht auch...) Also R.id.xy R.drawable.xsö usw.
Dann startest du das Projekt einfach. Automatisch wird nun die R "richtig" erstellt und ist benutzbar.

Nun kannst du wieder alle R.'s hinzufügen bzw. wieder "dekommentieren" ^^ -> Have Fun

Gruß
 
  • Danke
Reaktionen: tbremer19
Nächstes Problem: (Ich kopiere das hier mal von meinem Beitrag auf AndroidPIT, wo mir leider niemand antwortet...

Hallo,
also es geht darum: Meine App hat zwei EditText-felder und einen Button. Wenn man den Button klickt, soll das eingegebene als Variable gespeichert werden. Bis jetzt habe ich diesen Code (bis zum Button bin ich noch nicht):

Code:
package com.timbremer.ggnauenvertretungsplan;

import android.os.Bundle;
import android.preference.PreferenceManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.app.Activity;
import android.content.SharedPreferences;

public class MainActivity extends Activity {
	
	  public EditText etusername;
      public EditText etpassword;
      public Button btlogin;
      
	
	@Override
    
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         
        
        SharedPreferences app_preferences = 
            PreferenceManager.getDefaultSharedPreferences(this);

       getPreferences(MODE_PRIVATE).edit().[b]putString[/b]("username",etusername).commit();
		
       getPreferences(MODE_PRIVATE).edit().[b]putString[/b]("password",etpassword).commit();
    }


    
    
}

Das, was fett geschrieben ist, ist von eclipse auch unterstrichen worden. Wenn ich mit der Maus drüber hovere, wird dieser Fehler gezeigt:

" The method putString(String, String) in the type SharedPreferences.Editor is not applicable for the arguments (String, EditText) "
Wo liegt der Fehler?
 
Etpasswort.gettext brauchst du

Gesendet von meinem Nexus 5 mit der Android-Hilfe.de App
 
Ich hab jetzt das eine EditText von Passwort zu normal geändert. Jetzt geht alles. Woran liegt das?
 
Hi,

weil du nur das TextView-Objekt und nicht den Inhalt desssen zurück bekommst, wenn du
.putString("username",etusername)
sagst...

Deshalb muss, wie swordi schon sagt, getText() hinten dran, damit du dessen inhalt bekommst...

Gruß
 
Nächtes Problem :( :
Wenn der Button geklickt wird, soll der Text aus meinen beiden EditText Boxen in Strings gespeichert werden. Danach auch in den SharedPreferences.

z6cLjRy.png


Nun zeigt mir eclipse wieder einen Fehler an:

The method getDefaultSharedPreferences(Context) in the type PreferenceManager is not applicable for the arguments (new View.OnClickListener(){})
 
Vllt solltest du dich erstmal mit den Java Grundlagen vertraut machen ;)

Zu deinem Problem:
Ein Problem steht doch da, es wird kein onClickListener als Argument erwaret, sondern ein Context.
Du rufst das ganze bestimmt in einem Annonymen Listener auf, und somit ist this nicht mehr die Activity bzw. Context, sondern der listener.
Lösen kannst du das mit DeineActivty.this.

lg. Dagobert
 
  • Danke
Reaktionen: tbremer19
Neue Woche, neues Problem...

Ich habe eben etwas geändert, aber dummerweise vergessen, was... :(
Alles, was fett und unterstrichen ist, wird von eclipse unterstrichelt.
Hier der Code der MainActivity.java:
Code:
package com.timbremer.ggnauenvertretungsplan;

import org.apache.http.util.EncodingUtils;

import android.R;
import android.R.layout;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.CookieManager;
import android.webkit.WebSettings.PluginState;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends Activity {
	
	  private EditText etusername;
      private EditText etpassword;
      private Button btlogin;
      private Button btfeedback;         
      
      @Override
      public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.[u][b]activity_main[/b][/u]);
      
      Button btlogin = (Button) findViewById(R.id.[b][u]btlogin[/u][/b])
     
      EditText etusername = (EditText) findViewById(R.id.[b][u]etusername[/u][/b]);
      
      findViewById(R.id.[b][u]btfeedback[/u][/b]).setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View v) {
              Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
              String[] recipients = new String[]{"tbremer19@gmail.com", "",};
              emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
              emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Feedback zur Vertretungsplan App");
              emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Fehler, Lob, Kritik oder Funktionswünsche:");
              emailIntent.setType("text/plain");
              startActivity(Intent.createChooser(emailIntent, "Sende Mail mit..."));
              finish();
          }
      });
      
      
	  
	  new AlertDialog.Builder(MainActivity.this)

	  .setTitle("BETA")

	  .setMessage("Die App befindet sich zurzeit noch in einer Beta-Testphase. Wenn du Fehler in meiner App findest, klick einfach auf den Feedback-Button.")

	  .setNeutralButton("Fenster Schließen",

	  new DialogInterface.OnClickListener() {

	  public void onClick(DialogInterface dialog,

	  int which) {

	  }

	  }).show();
           
      
      
      //button
      
      findViewById(R.id.[b][u]btlogin[/u][/b]).setOnClickListener( new View.OnClickListener() {
			
    	  
		@SuppressLint("SetJavaScriptEnabled") @Override
    	  	 public void onClick(View v) {
			
			EditText etusername = (EditText) findViewById (R.id.[b][u]etusername[/u][/b]);
			etusername.setText(etusername.getText().toString());
			EditText etpassword = (EditText) findViewById (R.id.[b][u]etpassword[/u][/b]);
    		etpassword.setText(etpassword.getText().toString());
    		  
    		  WebView wv = new WebView(MainActivity.this);
    		  	 setContentView(wv);
    		  	wv.getSettings().setBuiltInZoomControls(true);
    		  	CookieManager.getInstance().setAcceptCookie(true);
    		  	wv.getSettings().setJavaScriptEnabled(true);
    		  	wv.getSettings().setLoadWithOverviewMode(true);
    		  	wv.getSettings().setUseWideViewPort(true);
    		  	wv.loadUrl("javascript: {" +
    		            "document.getElementById('username').value = '"+etusername+"';" +
    		            "document.getElementById('password').value = '"+etpassword+"';" +
    		            "var frms = document.getElementsByName('login');" +
    		            "frms[0].submit(); };");
    		  	wv.setWebViewClient(new WebViewClient() {
    		        @Override
    		        public boolean shouldOverrideUrlLoading(WebView view, String url) {
    		            return false;
    		        }
    		    });
    		  	
    		  	
    		  	 String url = "http://www.ggnauen.de/index.php";
    		  	 String data = "username" + etusername + "&password" + etpassword;
    		  	
    		  	 wv.postUrl(url, EncodingUtils.getBytes(data, "base64"));
    		 
    	  	
    	  	
    		 }
    	  	
    	  	
    	  	 });
    	   
    	  
    	   
    	   }





	
		
	
    	
    	  
    	   
    	   
    	  }

Und hier die activity_main.xml:
Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    >

    <Button
        android:id="@+id/btlogin"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/etpassword"
        android:layout_marginTop="19dp"
        android:text="Anmelden" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/etusername"
        android:layout_alignParentTop="true"
        android:text="Login"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/etusername"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/etpassword"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="16dp"
        android:ems="10"
        android:hint="Benutzername" >

        <requestFocus />
    </EditText>

    <EditText
        android:id="@+id/etpassword"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/btlogin"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/etusername"
        android:ems="10"
        android:hint="Passwort" />

    <Button
        android:id="@+id/btfeedback"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignRight="@+id/btlogin"
        android:text="Feedback" />

    

</RelativeLayout>
Ich bekomme immer einen Fehler: "...cannot be resolved or is not a field"
Danke, tbremer19
 
probier mal: Projekt oben: build projekt
... :D
 
Nene, es waren die imports... android.R und android.R.layout habe ich gelöscht. Das habe ich eben erst bemerkt, weil die imports bei mir eingeklappt waren
 

Ähnliche Themen

4
Antworten
10
Aufrufe
1.081
jogimuc
J
G
Antworten
0
Aufrufe
132
Gerdchen07
G
G
Antworten
1
Aufrufe
384
Gerdchen07
G
G
Antworten
13
Aufrufe
598
Gerdchen07
G
L
Antworten
2
Aufrufe
554
Lexub
L
Zurück
Oben Unten