-2

Android를 배우고 Wingnity의 가이드를 따릅니다. Android Studio 2.1.3을 사용하고 있습니다.오류 : 불행히도 앱이 중지되었습니다.

2 개의 Java 클래스 (MainActivity 및 SimpleFragmentActivity)와 3 개의 레이아웃 (activity_main, activity_simple_fragment 및 fragment simple (empty))이 있습니다.

내 코드에 어떤 문제가 있는지 잘 모르겠습니다. 솔루션을 검색하려고 시도했지만 코드가 올바른 것으로 보입니다.

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; 
     } 

    } 

} 

레이아웃

01 activity_main 23,516,
<?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> 

아무도 여기에 실수를 지적하시기 바랍니다 수 있습니다. 방금 Wingnity Tutorial 1 : Fragments 작성에 사용 된 코드를 따랐습니다.

오류 로그

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

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);); } }); } } 

오류 (로그 캣) – Zoe

+0

추가 어떤 활동을 당신이 먼저로드합니까? 'MainActivity'의 경우, 어떻게'simples'를 호출합니까? 충돌의 원인은 무엇입니까 (즉시, 클릭 후 등)? 마지막으로 오류에 대해 질문 할 때 항상 오류 로그를 공유합니다. – Shaishav

+0

오류 로그를 추가했습니다. 사과드립니다. –

답변

0

변경

setContentView(R.layout.fragment_simple); 

이 라인

setContentView(R.layout.activity_simple_fragment); 

당신은 조각과 루트 2와 동일한 레이아웃을 overrite 수 없습니다. 당신은 당신의 SimpleFragmentActivitygetSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();를 호출하여 레이아웃에 조각을 추가하려고하지만 레이아웃의 ID가 activity_simple_fragment.xmlcontainer이다가

+0

변경하려고 시도했지만 오류가 계속 발생합니다. –

+0

의 선택을 취소 즉시 실행 및 \t 비활성화 인스턴트 실행을 시도 : 설정 → 빌드, 실행은 배포 즉시 실행 → 및 취소는 즉시 실행 – Halumz

+0

그것을 시도 할 수 있습니다. 오류가 계속 발생합니다. ( –

0

이 달라야합니다. 레이아웃을 추가하고 ID를 container, activity_simple_fragment.xml으로 설정해야합니다.

+0

은 activity_main.xml의 android : id = "@ + id/container"를 activity_simple_fragment.xml로 이동하려고 시도했지만 오류가 계속 발생합니다. –

0

java.lang.IllegalStateException: Could not find method simples(View) in a parent or ancestor Context for android:onClick attribute defined on view class은 onClick in XML 사용을 피합니다. 여기

<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 
관련 문제