android java的类中类怎么调用外部类的方法?

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成员
        }
    }
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-08-01
内部类调用外部类 创建外部类对象 在调用 而 外部类调用内部类不需要创建对象可直接调用
MainActivity ma=new MainActivity();

ma.strlink(str1,str2);追问

大概原理有点眉目。但是如何获取外部类的this指针呢?
如果能获取外部类的this指针就很好办了。

追答

MainActivity .this.strlink(str1,str2); 试一下

追问

试过不在访问范围,感觉这个应该是类中类的一个匿名类,需要访问最外部的方法。就是不知道怎么获取最外层的this指针。

追答

跟你的内部类为static 有关
静态的类在运行时加载到内存中,不需要实例化,在类的内部也不能使用this。

本回答被提问者采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网