Androidページジャンプ(返信結果なし/含む)

4876 ワード

一.2ページのxmlファイル
factivity
    

sactivity

    

二.在manifest中注册Activity,为首先启动的activity提供标注


        
        
             //     activity   
                
                
         
        
       

         
            android:name=".Sactivity"
            android:label="@string/app_name" >
        
        

三.最初のジャンプ:結果を返さないジャンプFactivityファイルの作成
        private Button bt1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.factivity);
        bt1 = (Button) findViewById(R.id.button1);
        bt1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(Factivity.this, Sactivity.class);
                startActivity(intent);
            }

シミュレータでテストし、「直接ジャンプ」をクリックして別のページに移動します.
四.2つ目のジャンプ:結果を返すジャンプFactivityファイルの作成
    private Button bt2;
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.factivity);
        bt2 = (Button) findViewById(R.id.button2);
        tv= (TextView) findViewById(R.id.textView1);
        bt2.setOnClickListener(new OnClickListener() {      
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(Factivity.this, Sactivity.class);
                startActivityForResult(intent, 1);          
            }
        });
    }
        @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==1&&resultCode==2){
            String content = data.getStringExtra("data");
            tv.setText(content);        
        }
    }

Sactivityファイル作成
    private Button bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sactivity);
        bt= (Button) findViewById(R.id.button);
        bt.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent data= new Intent();
                data.putExtra("data","hello");
                setResult(2,data);
                finish();
            }
        });
    }

「テキストビューの変更にジャンプ」をクリックすると、別のページにジャンプし、別のページのボタンをクリックして元のページに戻ります.テキストビューが「hello」に変更されていることがわかります.
五.コードの具体的な理解
Intent intent = new Intent(Factivity.this, Sactivity.class); startActivity(intent);
intentはstartActivityの導きと考えられ、どこ(Factivity.this)からどこ(Sactivity.class)へ
Intent intent = new Intent(Factivity.this, Sactivity.class); startActivityForResult(intent, 1);
startActivity ForResultのintentと同様に、「1」はFactivityからSactivityへの申請番号を表します.
Intent data= new Intent(); data.putExtra("data","hello"); setResult(2,data); finish();
intentはジャンプを表すのではなく,返信パラメータを持つシンボル「data」と具体的なパラメータ「hello」setResult()メソッドの2はSactivityからFactivityへの結果コードである.
if(requestCode==1&&resultCode==2){ String content = data.getStringExtra("data"); tv.setText(content);}
申請番号と結果番号を検証した後、StringがintentのgetStringExtraメソッドで戻りパラメータの番号「data」で返される具体的なパラメータを初期化します.