활동에서 확장하는 다른 클래스의 메서드를 사용하는 데 문제가 있습니다. 모든 단일 활동에서 반복해야하는 코드가 있으므로이 코드로 클래스를 만들었고 다른 클래스에서 메서드를 사용하려고하면 오류가 발생합니다.
첫번째 교시:
public class first extends Activity
public void onCreate(){
second s = new second();
s.myMethod();
}
이급:
public class second extends Activity
public void myMethod(){}
이런 식으로 NullPointerExption을 얻습니다.
첫번째 교시:
public class first extends Activity
public void onCreate(){
Context context = getApplicationContext();
second s = ((second)context);
s.myMethod(context );
}
이급:
public class second extends Activity
Context context ;
public void myMethod(Context context){
this.context = context;
}
이렇게하면 InvocationTargetException이 발생합니다.
이것은 내 코드입니다.
MainActivity-퍼스트 클래스 :
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}//onCreate
public void ClickMe(View V) {
Toast.makeText(this, "ClickMe", Toast.LENGTH_SHORT).show();
Context context = getApplicationContext();
menuSetup myMenu = ((menuSetup)context);
myMenu.SetMenuListView();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {// Action Bar buttons
switch (item.getItemId()) {
case R.id.action_settings:
SlidingDrawer myS = (SlidingDrawer) findViewById(R.id.slidingDrawer1);
myS.animateToggle();
break;
}
return super.onOptionsItemSelected(item);
}
}
menulList-2 등석 :
public class menuSetup extends Activity {
MenuAdapter adapter;
ListView myList;
int myPosiition;
public void SetMenuListView() {
myList = (ListView) findViewById(R.id.listView1);
adapter = new MenuAdapter(this);
myList.setAdapter(adapter);
myList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
myPosiition = position;
StartActivityMethod();
}
});
}
private void StartActivityMethod() {
switch (myPosiition) {
case 0:
Intent item2 = new Intent(this, Item2.class);
startActivity(item2);
finish();
break;
case 1:
Intent item3 = new Intent(this, Item3.class);
startActivity(item3);
finish();
break;
case 2:
Toast.makeText(this, "Missing Page", Toast.LENGTH_SHORT).show();
break;
}
}
}
Activity 클래스의 인스턴스를 만들면 안됩니다. 일반 수업이 아닙니다. 자체 수명주기가 있습니다. 매니페스트에서만 활동을 선언했습니다.
대신 Uitlity 클래스를 만들고 Context를 Utility 클래스의 생성자에 전달하고 거기에서 사용할 수 있습니다.
Raghav Sood 인용
활동을 일반 Java 클래스로 처리하면 널 컨텍스트가됩니다. Activity의 대부분의 메서드가 해당 컨텍스트에서 호출되므로 null 포인터 예외가 발생하므로 앱이 충돌합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다