0

내 응용 프로그램의 아이콘과 텍스트가 포함 된 gridview로 구성된 '홈 스크린'을 구현했습니다. 이 잘 작동하고 OnItemClickListener 추가 할 수 있도록 아이콘을 두드리는 등 토스트를 만듭니다. 하지만 여기에서 startActivityForResult()를 호출하는 방법을 잘 모르겠습니다. 애플리케이션 컨텍스트를 전달하고이를 사용하여 의도 등을 작성할 수는 있지만 올바른 방법은 아닙니다.OnItemClickListener() 내 startActivityForResult() 호출

내 코드는 다음과 같습니다 : 어떤 도움

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.title); 

    GridView gridview = (GridView) findViewById(R.id.icons_gridview); 
    gridview.setAdapter(new HomeScreenAdapter(this)); 

    gridview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
      switch(position){ 
      case 0: 
       //need to start new activity 1 from here 
       break; 
      case 1: 
       //need to start new activity 2 from here 
       break; 
      } 
     } 
    }); 

감사합니다,

TLB를

답변

0

방법 1 (내 선호하는 방법) 컨텍스트로 ActivityName.this 전달

내가하는 방식이다. 예를 들어

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.title); 

    GridView gridview = (GridView) findViewById(R.id.icons_gridview); 
    gridview.setAdapter(new HomeScreenAdapter(this)); 

    gridview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
     switch(position){ 
     case 0: 
      Intent intent = new Intent(MyActivity.this, NextActivity.class); 
      startActivityForResult(intent, 0); 
      break; 
     case 1: 
      //need to start new activity 2 from here 
      break; 
     } 
    } 
}); 

당신은 문맥으로 getApplicationContext()을 전달할 수 2

방법;

방법 3

Context mContext 필드를 갖는 일반적인 방법이다. onCreate의 시작 부분에 설정 한 다음 mContext을 사용하여 활동을 시작하십시오.

private Context mContext; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.title); 

    mContext = this; 

    ... 
} 

그런 다음 당신은 그냥

startActivityForResult(new Intent(MainActivity.this, Activity1.class)); 

를 사용하는 컨텍스트 매개 변수

Intent intent = new Intent(mContext, NextActivity.class); 
startActivityForResult(intent, 0); 
+0

Jin35에서도 제안 된 방법 1은 완벽하게 작동합니다. 방법 2는 그것을 피하는 올바른 방법처럼 보이지 않으므로 피하려고 노력했습니다. 매우 감사합니다! – TheLastBert

0

로 mContext를 사용하여 새로운 활동을 시작할 수 있습니다 모든 것이 쉽게

0

컨텍스트는 현재 활동의 컨텍스트 여야합니다. '이'는 훌륭하게 작동 할 것입니다.

관련 문제