public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null)
{
getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
}
}
public String strlink(String str1,String str2) //需要调用的方法
{
return str1+str2;
}
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);
final Button btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(new Button.OnClickListener(
{
//在这里调用外部的strlink()该怎么做呢?
});
}
}
}
æåå é¨ç±»å¯ä»¥æ æ¡ä»¶å°è®¿é®å¤é¨ç±»çæåï¼èå¤é¨ç±»æ³è®¿é®æåå é¨ç±»çæåå´ä¸æ¯è¿ä¹éå¿æ欲äºãå¨å¤é¨ç±»ä¸å¦æè¦è®¿é®æåå é¨ç±»çæåï¼å¿ é¡»å å建ä¸ä¸ªæåå é¨ç±»ç对象ï¼åéè¿æåè¿ä¸ªå¯¹è±¡çå¼ç¨æ¥è®¿é®ï¼
class Circle {//å¤é¨ç±»private double radius = 0;
public Circle(double radius) {
this.radius = radius;
getDrawInstance().drawSahpe(); //å¿ é¡»å å建æåå é¨ç±»ç对象ï¼åè¿è¡è®¿é®
}
private Draw getDrawInstance() {//åå§åå é¨ç±»ï¼ä»¥ä¾¿å¯ä»¥è®¿é®
return new Draw();
}
class Draw { //å é¨ç±»
public void drawSahpe() {
System.out.println(radius); //å¤é¨ç±»çprivateæå
}
}
}
MainActivity ma=new MainActivity();
ma.strlink(str1,str2);追问
大概原理有点眉目。但是如何获取外部类的this指针呢?
如果能获取外部类的this指针就很好办了。
MainActivity .this.strlink(str1,str2); 试一下
追问试过不在访问范围,感觉这个应该是类中类的一个匿名类,需要访问最外部的方法。就是不知道怎么获取最外层的this指针。
追答跟你的内部类为static 有关
静态的类在运行时加载到内存中,不需要实例化,在类的内部也不能使用this。