在onClick方法中重新启动活动

时间:2014-09-15 13:44:31

标签: android android-activity restart

我有一个应用程序,它读取.txt文件并以表格布局显示内容。

这是我的MainActivity.java文件:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(new TableLayout(this,0));
    }    
}

在添加第一行(标题)时,在TableLayout类中,我还添加了单击侦听器。

以下是点击发生时执行的代码:

public class MyOnClickListener extends MainActivity implements OnClickListener {

    int rowNumber;
    public MyOnClickListener(int rowNumber) {
        this.rowNumber = rowNumber;
    }

    @Override
    public void onClick(View v) {
        setContentView(new TableLayout(context,rowNumber));         
    }
};

上下文是从第一次启动活动时保存的,但是我将此作为参数得到nullpointexception错误。 单击标题时我想要做的是重新创建带有标题号参数的表。 所以我的问题是如何在onClick方法中重新启动表创建?

编辑:这是保存上下文的方式

Context context;

public TableLayout(Context context, int rowNr) {

    super(context);

    this.context = context;

1 个答案:

答案 0 :(得分:0)

我可能会做这样的事情

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new TableLayout(this, getRowNumber()));
    }

    protected int getRowNumber(){
        return 0;
    }    
}

然后你做了类似

的事情
public class MyOnClickListener extends MainActivity implements OnClickListener {

    // here you initialize rowNumber
    static int rowNumber = 0;

    @Override
    protected void getRowNumber(){
        return rowNumber;
    }

    @Override
    public void onClick(View v) {
        // here you set your rowNumber
        rowNumber = some_value;
        recreate();         
    }
};
P.S:我还没有编译过这个,但你可以得到这个想法