-2

Ich lerne Android und folgte dem Tutorial in Wingnity. Ich benutze Android Studio 2.1.3.Fehler: Leider App gestoppt

Ich habe 2 Java-Klassen (MainActivity und SimpleFragmentActivity) und 3 Layout (activity_main, activity_simple_fragment und Fragment einfach (leer)).

Ich bin nicht sicher, was mit meinem Code falsch ist. Versucht, nach der Lösung zu suchen, aber der Code scheint korrekt zu sein.

MainActivity

package com.example.ramosva.sunshine; 

import android.app.Fragment; 
import android.content.Intent; 
import android.support.v4.app.FragmentActivity; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.ActionBarActivity; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.support.v4.app.DialogFragment; 
import android.widget.Adapter; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import java.lang.reflect.Array; 
import java.util.ArrayList; 
import java.util.List; 
import java.lang.Object; 
import java.util.Arrays; 


public class MainActivity extends AppCompatActivity { 

    ListView listView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 



    } 

    public void simples(View v){ 

       Intent intent = new Intent(getApplicationContext(), SimpleFragmentActivity.class); 
       startActivity(intent); 
//  startService(intent); 

    } 

} 

SimpleFragmentActivity

package com.example.ramosva.sunshine; 


import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v7.app.AppCompatActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.Toast; 


/** 
* A simple {@link Fragment} subclass. 
*/ 
public class SimpleFragmentActivity extends AppCompatActivity { 


    public SimpleFragmentActivity() { 
     // Required empty public constructor 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_simple_fragment); 

     if(savedInstanceState == null){ 
      getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit(); 
     } 
    } 

    public static class PlaceholderFragment extends Fragment{ 

     public PlaceholderFragment(){ 

     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
           Bundle savedInstanceState) { 
      // Inflate the layout for this fragment 
      View rootview = inflater.inflate(R.layout.activity_simple_fragment, container, false); 

      Button btnClickMeGym = (Button)rootview.findViewById(R.id.btnSimpleFragGym); 
      btnClickMeGym.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Toast.makeText(getActivity(), "You clicked me Gym", Toast.LENGTH_SHORT).show(); 
       } 
      }); 
      return rootview; 
     } 

    } 

} 

Layouts

activity_main

<?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:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:gravity="center" 
    tools:context=".MainActivity" 
    tools:ignore="MergeRootFrame" > 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Simple Fragment" 
     android:id="@+id/btnSimpleFragmentMain" 
     android:layout_gravity="center_horizontal" 
     android:onClick="simples" /> 


    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button2" 
     android:layout_gravity="center_horizontal" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_gravity="center_horizontal" /> 
</LinearLayout> 

activity_simple_fragment

<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" 
    tools:context="com.example.ramosva.sunshine.SimpleFragmentActivity"> 

    <!-- TODO: Update blank fragment layout --> 
    <!--<TextView--> 
     <!--android:layout_width="match_parent"--> 
     <!--android:layout_height="match_parent"--> 
     <!--android:text="@string/hello_blank_fragment" />--> 


    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:id="@+id/imageView" 
     android:scaleType="centerCrop" 
     android:src="@drawable/carls" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Click Me!" 
     android:id="@+id/btnSimpleFragGym" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="60dp" /> 
</RelativeLayout> 

fragment_simple

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

</LinearLayout> 

Kann hier den Fehler hinweisen jemand bitte. Ich folgte nur dem Code, der in Wingnity Tutorial 1: Erstellen von Fragmenten verwendet wurde.

Error Log

01-01 23:27:10.865 27075-27075/com.example.ramosva.sunshine W/System: ClassLoader referenced unknown path: /data/app/com.example.ramosva.sunshine-1/lib/arm 
01-01 23:27:11.005 27075-27075/com.example.ramosva.sunshine W/System: ClassLoader referenced unknown path: /data/app/com.example.ramosva.sunshine-1/lib/arm 
01-01 23:27:11.150 27075-27075/com.example.ramosva.sunshine W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 
01-01 23:27:11.295 27075-27075/com.example.ramosva.sunshine D/SecWifiDisplayUtil: Metadata value : none 
01-01 23:27:11.300 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{a7cb583 I.E...... R.....ID 0,0-0,0} 
01-01 23:27:11.300 27075-27167/com.example.ramosva.sunshine D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true 
01-01 23:27:11.355 27075-27167/com.example.ramosva.sunshine D/libEGL: eglInitialize EGLDisplay = 0xae27f7c4 
01-01 23:27:11.355 27075-27167/com.example.ramosva.sunshine I/OpenGLRenderer: Initialized EGL, version 1.4 
01-01 23:27:11.360 27075-27167/com.example.ramosva.sunshine D/mali_winsys: new_window_surface returns 0x3000, [1440x2560]-format:1 
01-01 23:27:11.410 27075-27075/com.example.ramosva.sunshine W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView) 
01-01 23:27:11.490 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 96 - 0, 0) vi=Rect(0, 96 - 0, 0) or=1 
01-01 23:27:11.515 27075-27075/com.example.ramosva.sunshine I/Timeline: Timeline: Activity_idle id: [email protected] time:10330371 
01-01 23:27:13.795 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
01-01 23:27:13.880 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
01-01 23:27:14.585 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
01-01 23:27:14.700 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
01-01 23:27:14.940 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
01-01 23:27:15.020 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
01-01 23:27:15.105 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
01-01 23:27:15.205 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
01-01 23:27:15.345 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
01-01 23:27:15.435 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
01-01 23:27:15.645 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
01-01 23:27:15.735 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
01-01 23:27:16.050 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
01-01 23:27:16.155 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
01-01 23:27:16.440 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
01-01 23:27:16.510 27075-27075/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
01-01 23:27:16.515 27075-27075/com.example.ramosva.sunshine D/AndroidRuntime: Shutting down VM 
01-01 23:27:16.520 27075-27075/com.example.ramosva.sunshine E/AndroidRuntime: FATAL EXCEPTION: main 
                       Process: com.example.ramosva.sunshine, PID: 27075 
                       java.lang.IllegalStateException: Could not find method simples(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'btnSimpleFragmentMain' 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
                        at android.view.View.performClick(View.java:5697) 
                        at android.widget.TextView.performClick(TextView.java:10826) 
                        at android.view.View$PerformClick.run(View.java:22526) 
                        at android.os.Handler.handleCallback(Handler.java:739) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:158) 
                        at android.app.ActivityThread.main(ActivityThread.java:7225) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
01-01 23:27:18.590 27075-27075/com.example.ramosva.sunshine I/Process: Sending signal. PID: 27075 SIG: 9 
01-01 23:44:07.140 29325-29325/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
01-01 23:44:07.230 29325-29325/com.example.ramosva.sunshine D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
01-01 23:44:07.235 29325-29325/com.example.ramosva.sunshine D/AndroidRuntime: Shutting down VM 
01-01 23:44:07.235 29325-29325/com.example.ramosva.sunshine E/AndroidRuntime: FATAL EXCEPTION: main 
                       Process: com.example.ramosva.sunshine, PID: 29325 
                       java.lang.IllegalStateException: Could not find method simples(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'btnSimpleFragmentMain' 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) 
                        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
                        at android.view.View.performClick(View.java:5697) 
                        at android.widget.TextView.performClick(TextView.java:10826) 
                        at android.view.View$PerformClick.run(View.java:22526) 
                        at android.os.Handler.handleCallback(Handler.java:739) 
                        at android.os.Handler.dispatchMessage(Handler.java:95) 
                        at android.os.Looper.loop(Looper.java:158) 
                        at android.app.ActivityThread.main(ActivityThread.java:7225) 
                        at java.lang.reflect.Method.invoke(Native Method) 
                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
+0

Fügen Sie den Fehler (logcat) – Zoe

+0

Welche Aktivitäten lade Sie zuerst? Wenn 'MainActivity', wie nennt man' Simple' darin? Was ist der Auslöser für den Absturz (sofort, nach einem Klick usw.)? Schließlich teilen Sie IMMER Fehlerprotokolle, wenn Sie nach Fehlern fragen. – Shaishav

+0

Die Fehlerprotokolle wurden hinzugefügt. Entschuldigung dafür. –

Antwort

0

Ändern Sie diese Zeile

setContentView(R.layout.activity_simple_fragment); 

zu

setContentView(R.layout.fragment_simple); 

Sie können nicht zwei gleiche Layout in Fragment und Wurzel overrite. Es sollte anders seine

+0

Versucht, es zu ändern, aber der Fehler tritt immer noch auf. –

+0

Uncheck Instant-Lauf und versuchen \t deaktivieren Instant-Run: Einstellungen → Bauen, Durchführung, Bereitstellung → Instant-Run und deaktivieren aktivieren Instant-Run – Halumz

+0

es versucht. Fehler kommt immer noch :( –

0

Sie haben versucht, durch ein Fragment zu einem Layout hinzufügen getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit(); in Ihrem SimpleFragmentActivity nennen, aber es gibt kein Layout von id ist container in Ihrem activity_simple_fragment.xml. Sie müssen also ein Layout hinzufügen und seine ID auf container in activity_simple_fragment.xml setzen.

+0

gerade versucht, die android: id = "@ + ID/Container" in activity_main.xml zu activity_simple_fragment.xml und Fehler immer noch kommt. –

0

Es heißt java.lang.IllegalStateException: Could not find method simples(View) in a parent or ancestor Context for android:onClick attribute defined on view class Vermeiden Sie onClick in XML verwenden.

public class MainActivity extends AppCompatActivity { 

ListView listView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button button = (Button) findViewById(R.id.btnSimpleFragmentMain); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startActivity(new Intent(getApplicationContext(), SimpleFragmentActivity.class);); 
     } 
    }); 
    } 
} 

Hier

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Simple Fragment" 
    android:id="@+id/btnSimpleFragmentMain" 
    android:layout_gravity="center_horizontal"/> 
    //onClick removed 
Verwandte Themen