【问题标题】:Setting TextView with string from string array chosen in a ListView in Android使用在 Android 的 ListView 中选择的字符串数组中的字符串设置 TextView
【发布时间】:2012-04-30 13:48:25
【问题描述】:

好的,简要总结一下。该应用程序以 listView(由字符串数组填充)打开,当您点击列表中的一个项目时,它会将您带到另一个 listView(由字符串数组填充),其中包含与您点击的第一个项目相关联的项目。在第二个 listView 中,我想点击一个项目并让它显示一个带有来自另一个字符串数组的关联项目的 textView。到目前为止,我有前两个 listViews 工作,但无法让 textView 工作。我已经为此头疼了两天了,我感到非常沮丧。你能帮忙吗?!

这是我的字符串 xml 文件:

<string-array name="topics">
<item>Idioms</item>
<item>Travel</item>
<item>Small Talk</item>
<item>Tips</item>
<item>App Data</item>
</string-array>

<string-array name="idioms">
    <item>Cash Chow</item>
    <item>No Spring chicken</item> 
</string-array>

<string-array name="travel">
    <item>Asking for Change</item>
    <item>Bus and Train Schedule</item>
</string-array>

<string-array name="idioms_description">
    <item>A cash cow is a blah blah blah</item>
    <item>No spring chicken means blah blah blah</item>
</string-array>

<string-array name="travel_description">
    <item>This is a test for Asking for change</item>
    <item>This is a test for Bus and train schedules</item>
</string-array>

这是我的 getIntent 和我应该 setText 的地方。我将其留空,因为到目前为止我所尝试的一切都失败了,我只是不知道如何从所选数组中获取正确的字符串。

public class DetailLanguagePoints extends Activity{

private int position;
private TextView mLanguagePoint;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detail_view);
        mLanguagePoint = (TextView) findViewById(R.detail.languagepoints);

      Bundle extras = getIntent().getExtras();

      //int[] arrayIds = new int[]{R.array.idioms, R.array.travel};
      position = extras.getInt("listposition");

      int[] stringarrayIds = new int[]{R.array.idioms_description, R.array.travel_description};


      String[] subTopics = getResources().getStringArray(stringarrayIds[position]);

      String description = subTopics[position];

      final String TAG = "MyActivity";
      Log.d(TAG,description);

      mLanguagePoint.setText(description);      

    }

}

我发现空异常错误是什么问题,我没有在setcontentView()之后调用findViewById()。我这样做了,它解决了问题,它现在正在工作!感谢所有提供建议的人!!

【问题讨论】:

  • 你有没有在 logcat 中遇到任何错误?
  • 我稍微修改了代码,请在上面查看。我做了两件事,首先,我将所选 listView 项目的字符串打印到 LogCat 并打印了正确的字符串。但是当我单击 listView 中的项目时它仍然崩溃。这是我在 LogCat E/AndroidRuntime(281) 中遇到的错误:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.oiapps.everydayenglish/com.oiapps.everydayenglish.DetailLanguagePoints}: java.lang.NullPointerException 知道什么可能导致它?

标签: android android-intent textview arrays settext


【解决方案1】:

使用此代码mPosition = i.getIntExtra("listposition"); 而不是这个mPosition = i.getIntExtra("listposition", 0);

【讨论】:

  • 当我删除“0”时,Eclipse 给了我一个错误。它想要那个默认值。
【解决方案2】:

所以你只想将subTopics 设置为 ListView?

ListView listView = (ListView) findViewById(R.id.listView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, subTopics);
listView.setAdapter(adapter);

否则,请发布您因任何 logcat 错误而失败的原因。

【讨论】:

  • 感谢您的评论,但我实际上想从 subTopics 数组中获取一个字符串并将其放入 TextView 中。例如,如果您查看我上面包含的字符串 xml 文件,当我单击 idioms 数组中的“Cash Cow”时,我想在文本视图中显示“Cash cow is a blah blah blah”。
【解决方案3】:

你想在 TextView 中显示什么?两个子项用新行分隔?如果是这样,那么只需将 mLanguagePoint.setText() 更改为 mLanguagePoint.setText(subTopics[0] + "\n" + subTopics[1])

【讨论】:

  • 实际上,我想显示关联数组中的关联字符串。例如,如果您查看我包含的字符串 xml 文件,当我单击 idioms 数组中的“Cash Cow”时,我想在文本视图中显示“Cash cow is a blah blah blah”。
  • 检查堆栈跟踪的其余部分,可能会有一行显示“Caused by:”,然后是另一个简短的堆栈跟踪。这可以揭示异常的来源。
  • 是的,它说,原因是:java.lang.NullPointException 我不知道什么是空的,但我在我的代码中看不到任何可能为空的东西。
  • 它没有给出代码中导致异常的行号吗?
  • 感谢您的帮助,但我发现了问题,请参阅我编辑的帖子。谢谢!
【解决方案4】:

首先初始化mLanguagePoint。尝试类似

然后在第二个列表视图中添加onItemClickListener()

public void onItemClick(AdapterView<?> arg, View view, int position,long id) {


 mLanguagePoint.setText(subTopics[position]);
}

【讨论】:

  • 我用上面编辑的代码修复了我原来的问题,但我仍然在 LogCat E/AndroidRuntime(281) 中遇到错误:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.oiapps .everydayenglish/com.oiapps.everydayenglish.DetailLangua‌​gePoints}: java.lang.NullPointerException 这个错误是否与不包括 'mLanguagePoint.setText(subTopics[position]);在我的 ListView 的 onItemClick 方法中?奇怪的是它显示 listView 很好,就在我尝试进入它崩溃的文本视图时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多