0

おそらく単純なエラーですが、logcat が私を混乱させています。リストビューからこのアクティビティに変数 'name' を渡したところ、XML ファイルで textview ID として使用されている 'detailedsocietyname' を使用して、タイトル textview をその変数に変更したいと考えています。

final TextView changetitle = (TextView) findViewById(R.id.detailedsocietyname);
changetitle.setText(name);

それがうまくいかなかったとき、代わりにトーストを使ってテストしようとしました

Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG).show();

問題は、リストビューの選択が選択されたときにアプリがシャットダウンすることです....上記のすべてのコードがコメントアウトされている場合、機能しますが、デフォルトの画面タイトル「例」が表示されます。

前もって感謝します、

完全なコード

package com.apolloapps.ntusoc;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;

public class DetailedScreen extends Activity {

final TextView changetitle = (TextView) findViewById(R.id.detailedsocietyname);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Show the Up button in the action bar.
    //getActionBar().setDisplayHomeAsUpEnabled(true);

    Intent in = getIntent();
    String name = in.getStringExtra(("name"));//gets name from intent

    Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG).show();
    changetitle.setText(name);





    this.setContentView(R.layout.detailedscreen);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.detailedscreen, menu);
    return true;
}
}

編集: 最初のアクティビティ インテント コード

final String selected = (String) parent.getSelectedItem();
Intent i = new Intent(getApplicationContext(), DetailedScreen.class);
i.putExtra("name", selected);
startActivity (i);

解決策: 使用

final String name = items[position];

それ以外の

final String selected = (String) parent.getSelectedItem();
4

3 に答える 3

1

これを試して:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
setContentView(R.layout.detailedscreen);  //set the layout here

final TextView changetitle = (TextView) findViewById(R.id.detailedsocietyname); //then get id of any view
    Intent in = getIntent();
    String name = in.getStringExtra("name");//gets name here and make sure in first activity you are not passing empty string 

    Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG).show();
    changetitle.setText(name);
}

編集

最初のアクティビティで次のような文字列を渡した場合:

intent.putExtra("name", selected);

次に、このような2番目のアクティビティで取得します

name=in.getStringExtra("name");

トースト メッセージが正しい場合は、次のような単純なテキストを表示して確認できます。

  Toast.makeText(this,"Toast works fine " , 3000).show();

文字列を別のアクティビティに渡す方法のこの例を参照してください。

于 2013-04-04T13:12:54.983 に答える
0

onCreate() メソッドを再構築する

protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detailedscreen);

    //your code
}
于 2013-04-04T13:13:58.093 に答える