2016-06-13 15 views
1

Ich nahm etwas Code, um ein einfaches Formular auf Android zu machen. Es scheint, als ob einige Teile des Codes auf etwas verweisen. Ich bin mir nicht sicher, was ich da hinstellen soll, damit es funktioniert? Ich bekomme Fehler.Making Form auf Android Studio

Error:(18, 32) error: cannot find symbol variable activity_form 
Error:(33, 88) error: package com.chalkstreet.learnandroid.main does not exist 
Error:(48, 50) error: cannot find symbol class MainSource 
Error:(57, 41) error: cannot find symbol variable menu_main 

Ich glaube nicht, dass ich das Paket verwenden müssen, dass ich habe nicht.

Beispiel Problem:

Intent sender = new Intent(Form.this, 
===> ???? com.chalkstreet.learnandroid.main.Display.class); 

Hier ist meine Form:

public class Form extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_form); 
    getSupportActionBar().setHomeButtonEnabled(true); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    //Initialize buttons and Edit Texts for form 
    Button btnSubmit = (Button) findViewById(R.id.button_submit); 
    Button btnSrc = (Button) findViewById(R.id.buttonSrc); 
    final EditText name = (EditText) findViewById(R.id.editText1); 
    final EditText email = (EditText) findViewById(R.id.editText2); 
    final EditText phone = (EditText) findViewById(R.id.editText4); 

    //Listener on Submit button 
    btnSubmit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent sender = new Intent(Form.this, com.chalkstreet.learnandroid.main.Display.class); 
      Bundle b1 = new Bundle(); //Bundle to wrap all data 
      b1.putString("name", name.getText().toString()); //Adding data to bundle 
      b1.putString("email", email.getText().toString()); 
      b1.putString("phone", phone.getText().toString()); 
      sender.putExtras(b1); //putExtras method to send the bundle 
      startActivity(sender); 
      Form.this.finish(); //Finish form activity to remove it from stack 
     } 
    }); 

    //Listener on source button 
    btnSrc.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent j = new Intent(Form.this, MainSource.class); 
      startActivity(j); 
     } 
    }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == android.R.id.home) { 

     Form.this.finish(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 


} 
} 

Dank

+1

Es scheint, dass Sie die XML-Dateien activity_form.xml und menu_main.xml nicht erstellt haben. Außerdem haben Sie möglicherweise MainSource.java nicht erstellt oder wenn es sich um eine innere Klasse handelt, haben Sie die übergeordnete Datei nicht eingeschlossen. –

Antwort

2

Erstellen Sie eine Datei MainSource.java genannt, das heißt, wenn Sie nicht bereits getan haben, und erstellen Sie eine Datei menu_main.xml im Menü-Ordner unter dem res Verzeichnis mit dem Namen und Ihre Menüpunkte hinzuzufügen, erstellen Sie ein anderes Layout-Datei in der Layout-Ordner unter dem res Verzeichnis und den Namen es activity_form.xml, können Sie fügen Sie dann die notwendigen Ansichten mit den IDs die in Form.java

Anschaulicher passende, menu_main enthält möglicherweise

<menu 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"> 
    <item 
     android:id="@+id/action_settings" 
     android:orderInCategory="100" 
     android:title="@string/action_settings" 
     app:showAsAction="never" /> 
</menu> 

activity_form.xml könnte möglicherweise so etwas wie

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

     <EditText 
      android:id="@+id/editText1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="Name" /> 

     <EditText 
      android:id="@+id/editText2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="Email" /> 

     <EditText 
      android:id="@+id/editText3" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="Something Else" /> 

     <EditText 
      android:id="@+id/editText4" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:hint="Phone" /> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="horizontal"> 
     <Button 
      android:id="@+id/button_submit" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 

     <Button 
      android:id="@+id/buttonSrc" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
</LinearLayout> 
    </LinearLayout> 

sein Ich habe keine Ahnung, was Sie MainSource tun wollen, so kann ich nicht über so viel sagen. Ich hoffe das hilft.

+0

Ich habe eine Hochstufung durchgeführt, da dies gut erklärt wird. Wenn Sie jedoch eine neue Aktivität erstellen, werden alle Dateien automatisch generiert. –

1

Wenn Sie eine explizite Absicht erstellen, müssen Sie nur den Startkontext und das Ende-Klasse bieten .

Intent i = new Intent(FirstActivity.this, ResultActivity.class);