根据之前活动中按下的按钮,读取不同的.txt

时间:2017-02-21 11:38:36

标签: android android-activity text textview extras

我试图在第二个活动TextView中读取另一个.txt文件(在原始文件夹中),具体取决于.putextras(上一个活动)中按下了什么按钮,但它没有&#39工作。我使用 ImageButton but1=(ImageButton) findViewById(R.id.imageButton2); but1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent int1=new Intent(MainActivity.this,SecondActivity.class); int1.putExtra("Thistext", "textnumberone"); startActivity(int1); finish(); } }); ImageButton but2(ImageButton) findViewById(R.id.imageButton3); but2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent int2=new Intent(MainActivity.this,SecondActivity.class); int2.putExtra("Thistext", "textnumbertwo"); startActivity(int2); finish(); } }); 方法,这是 MainActivity 的代码:

    Bundle extradata = getIntent().getExtras();


    TextView tv = (TextView)findViewById(R.id.firsttextView);
    vitautori.setText(extradata.getString("Thistext"));

    if (extradata.equals("textnumberone")) {

        String texttxt = "";
        StringBuffer sbuffer = new StringBuffer();
        InputStream is = this.getResources().openRawResource(R.raw.file);
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));

        try {

            while ((texttxt = reader.readLine()) !=null){
                sbuffer.append(texttxt + "n");

            }

            tv.setText(sbuffer);
            is.close();


        }catch(Exception e) {
            e.printStackTrace();
        }
    }

    }
}

这是我使用Bundle的SecondActivity代码..

<ul id="cultureMenu" class="top-links list-inline" onselect="">
<li>
    <a class="dropdown-toggle no-text-underline" data-toggle="dropdown" href="#"><img class="flag-lang" src=@flag width="16" height="11" alt="lang" />@Resources.Resources.Language</a>
    <ul class="dropdown-langs dropdown-menu">
        <li onclick="yourfunction(this)"><a value="he" tabindex="-1"><img class="flag-lang" src="~/assets/images/flags/no.png" width="16" height="11" alt="lang" />Norsk</a></li>
        <li class="divider"></li>
        <li onclick="yourfunction(this)"><a value="en" tabindex="-1"><img class="flag-lang" src="/assets/images/flags/us.png" width="16" height="11" alt="lang" /> ENGLISH</a></li>
        <li onclick="yourfunction(this)"><a value="de" tabindex="-1"><img class="flag-lang" src="/assets/images/flags/de.png" width="16" height="11" alt="lang" /> Deutsch</a></li>
        <li  onclick="yourfunction(this)"><a value="ru" tabindex="-1"><img class="flag-lang" src="/assets/images/flags/ru.png" width="16" height="11" alt="lang" /> Русский </a></li>
    </ul>
</li>

2 个答案:

答案 0 :(得分:0)

创建Intent时(当然两个地方),我建议你尝试将类型设置为文字:

int1.setType("text/plain");

看看这是否有帮助。

答案 1 :(得分:0)

您目前正在将 Bundle 数据与

中的字符串进行比较
  

if(extradata.equals(&#34; textnumberone&#34;))

这不起作用,您必须首先提取 String 数据。试试这个:

Bundle extradata = getIntent().getExtras();
String textString = extradata.getString("Thistext");
if (textString.equals("textnumberone")) {

另一件事: 您将 String Bundle 设置为(我猜) TextView

  

vitautori.setText(extradata.getString(&#34; Thistext&#34));

但我没有在任何地方看到vitautori的初始化。因此,请确保它已初始化或将崩溃。