마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

No enclosing instance of the type...에러에 대해서!

0 추천

안녕하세요! 안드로이드 2.3.3 까지 개발하다가  다시 돌아온 개발자 입니다

예전에는 인텐트를 쉽게 했던거 같은데 지금은 이것저것 복잡해 졌네요^^

네 질문은 제가 버튼 리스너에 인텐트를 이용해서 다음 액티비티로 넘어가는 것을 하는데요

코드에서 fragment main에 코드를 넣었는데 메인엑티비티가 에러가 납니다

1. 인텐트 선언할떄

    @Override
            public void onClick(View v) {
                    Intent Next = new Intent(MainActivity.this,SelActivity.class);
                    startActivity(Next);
                }

이런식으로 하는걸로 아는데 메인엑티비티에 제목의 에러가 뜨면서 안되네요 ㅠㅠ

http://diyall.tistory.com/1072 여기를 참조해서 staric을 지우면 전부 에러가나고 ㅠㅠ 도와주세요!

MainActivity.java

package com.example.gapalchol;

import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;

import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
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.view.Window;
import android.widget.Button;
import android.widget.TextView;
import android.os.Build;

public class MainActivity extends ActionBarActivity  {
    

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

    
    }
    
    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {

        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,false);
        
            
        
            Button startButton = (Button)rootView.findViewById(R.id.startBtn);
            
            startButton.setOnClickListener(new View.OnClickListener() {
                
                @Override
            public void onClick(View v) {
                    Intent Next = new Intent(MainActivity.this,GameSelActivity.class); <-- 빨간줄부분
                    startActivity(Next);
                    
                    
                }
            });
            return rootView;
        }
    }

}
 

fragment_main.xml

<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:background="@drawable/main4"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin" >

    <Button
        android:id="@+id/startBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="-10dp"
        android:layout_marginTop="210dp"
        android:background="#00000000"
        android:src="@drawable/startbt" />

</RelativeLayout>

 

갈매비 (190 포인트) 님이 2014년 3월 17일 질문
갈매비님이 2014년 3월 18일 수정

1개의 답변

+1 추천
 
채택된 답변
PlaceHolderFragment는 static 클래스인데 MainActivity는 non-static 클래스이기 때문에 생긴 에러인데요.

 

MainActivity.this 대신 getActivity() 메소드를 사용하시면 해결될 꺼에요.
방귀과장 (18,940 포인트) 님이 2014년 3월 18일 답변
갈매비님이 2014년 3월 18일 채택됨
과장님 안녕하세요~ 지나가던 나그네인데 질문 좀.. 해도 될까요 '-';
메인클래스에서 타클래스로 전환할때 인텐트 첫 인자로 클래스명 대신 this를 사용하기도하잖아요
그런데 this 를 쓰게되면 Context 로 인식하더라구요.
그렇다면 글쓴님의 상황에서 인텐트 첫 인자로 getBaseContext() 를 사용해도될까요?
네, 초보개발자님 안녕하세요.

글쓴님의 상황에서는 getBaseContext()를 사용할 수 없는데요. 왜냐하면 이 메소드는 Fragment 클래스에 내장되어 있지 않기 때문입니다.
실제로 테스트 해보니 말씀대로네요 ^^ 배워갑니다
방귀과장님 감사해요~!!
...