如何在onOptionsItemSelected中引用onLoadFinished中的变量?

时间:2017-03-06 14:56:18

标签: java android variables methods menuitem

在这个onLoadFinished方法中,我获取特定数据库列的内容,并将其设置在EditView(mEditView)上,其id已在OnCreate方法中定义:

private void displayContent(String content) 
{
Toast.makeText(this, content, Toast.LENGTH_SHORT).show();
}

现在我需要使用变量" content"在这种方法之外。例如,我编写了一个方法来制作一个包含"内容的Toast消息"出现在屏幕上:

@Override
public boolean onOptionsItemSelected(MenuItem item)
    {
    switch(item.getItemId())
       {
        case R.id.display_toast:
            displayContent(String text);
            }
            return true;
        default:
            return super.onOptionsItemSelected(item);          
     }

我希望在单击操作栏菜单按钮时显示此Toast。但是这里有一个问题 - 当我在OnOptionsItemSelected中包含displayContent(字符串内容)时,我得到一个错误,因为变量" content"没有得到承认。

var input = [{
    "value": 1
 }, {
    "value": 2
 }],
 output = [],
 newItem,
 i = 0, ii = input.length;
 
 
 for(i; i<ii; i++){
  newItem = {};
  newItem.key = {"value":input[i].value};
  output.push(newItem);
 }
 
 console.log(output)

传递&#34;字符串内容&#34;作为onOptionsItemSelected的第二个输入也没有解决问题。我是Android编程的新手,尽管花了很多时间在网上搜索解决方案,但我无法找到答案。所以我非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

displayContent(String text)基本上是创建一个新的变量文本,然后将其提供给方法,因此它是空的。您必须将变量保存为Activity中的全局变量,然后可以在onOptionItemSelected中访问它。所以它会是这样的:

public class MyActivity extends Activity {

    private String content;

然后在onLoadFinished中,你不创建一个使用那个

的新变量
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor)
    {
    if (cursor.moveToFirst())
        {           
        int textColumnIndex = cursor.getColumnIndex(NoteEntry.COLUMN_TEXT);

        content = cursor.getString(textColumnIndex);
        mEditView.setText(content);         
        }  

然后在onOptionItemSelected中使用content作为方法的参数:

@Override
public boolean onOptionsItemSelected(MenuItem item)
    {
    switch(item.getItemId())
       {
        case R.id.display_toast:
            displayContent(content);
            }
            return true;
        default:
            return super.onOptionsItemSelected(item);          
     }

研究局部变量和全局变量之间的区别,这对你来说很有意义。