0

私はこのコードを持っていますが、動作しません (Force Close)、これを C# で使用しますが、Java では動作しません

ClassA c = new ClassA(); c.TextView1.setText("テスト");

ClassB からテキスト ビューを設定する必要があります。インテントはアクティビティを最初から開始する必要があり、すべてのデータが失われるため、インテントを使用せずに実行できます。

誰でもこれのコードを提案できますか

また、ClassB から ClassA に int x 値を設定できますか

4

7 に答える 7

2

はい、できます -

Intent i = new Intent(classA.this, classB.class);
Bundle bundle = new Bundle();
bundle.putExtra("name For Identification", "Value);
i.putExtras(bundle);
startActivity(i);

あなたの2番目のクラスでは、クラスBを意味します

Bundle bundle = getIntent().getExtras("name for Identification");
String text = bundle.getString("name For Identification");

このテキストをTextViewAnd に設定するだけで、クラス Bも拡張する必要があります。それ以外のActivity場合、getIntent()コードは機能しません。

于 2012-05-15T10:18:35.123 に答える
0

クラスA内

TextView を定義する

private TextView1 txtView1;

onCreate 中にロードする

txtView1 = (TextView) findViewById(R.id.txtView1);

セッターを書く

public void setTextOnTextView1(String text) {
  txtView1.setText(text);
}

他のクラスでできるようになりました

c.setTextOnTextView1("Hello");
于 2012-05-15T10:17:16.007 に答える
0

クラスAからクラスBへの意図

Intent toClassB = new Intent(classA.this,classB.class);
toClassB.putExtra("StringId","value"); 
startActivity(toClassB);

//get value
Intent intent = getIntent();
String getValue = intent.getStringExtra("StringId");
//set text
textView.setText(getValue);

お役に立てれば

于 2012-05-15T10:29:59.513 に答える
0

2 つのアクティビティ間で値を渡すには、次のように共有設定を使用できます

アクティビティ A:

public class activityA extends Activity{

private  final String MY_value = "value";//variable used for shared preference
@Override
    public void onCreate(Bundle savedInstanceState)
    {
SharedPreferences myPrefs = getBaseContext().getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
                    SharedPreferences.Editor prefsEditor = myPrefs.edit();
                    prefsEditor.putString(MY_value, "xyz");
                    prefsEditor.commit();
}
}

アクティビティ B では、次のようにその値を取得できます。

public class activityB extends Activity{

    private  final String MY_value = "value";//variable used for shared preference
    @Override
        public void onCreate(Bundle savedInstanceState)
        {
    SharedPreferences myPrefs1 = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
                roadworthynumber = myPrefs1.getString(MY_value, "value");

    }
    }
于 2012-05-15T10:39:17.837 に答える
0

はい、インテントを使用せずに実行できます。クラスの静的メソッド/メンバーを使用します

ClassA の静的メソッドから TextView オブジェクトを取得し、同様に ClassA の静的メソッド setX(int x) メソッドを定義します。

たとえば

class ClassA{

static TextView tv; //this should be intialized in your code via findViewByID or by code depneds

static int x;


static public TextView getTextView(){
return tv;
}


static public void setX(int xP){
x = xP;
}

}

ClassB から ClassA.getTextView() および ClassB.setX(12) を呼び出すことができます

于 2012-05-15T10:28:36.907 に答える
0

これを試して

これをアクティビティ 1 に追加します

Intent myIntent = new Intent(Activity1.this, Activity2.class);
       myIntent.putExtra("UserId",UserId);
       myIntent.putExtra("UserName",UserName);
       startActivity(myIntent);

これをアクティビティ 2 に追加します

Intent intent = getIntent();
UserId=intent.getStringExtra("UserId");
UserName=intent.getStringExtra("UserName");
于 2012-05-15T10:24:56.773 に答える
0

クラス A に関数 returnThis() を作成する

ClassA returnThis()
{
  return this;
}

classB でこの関数を呼び出し、classA の返された参照セット textView を使用して

于 2012-05-15T10:51:37.500 に答える