1

こんにちは、私は Android プログラミングに少し慣れていないので、問題があり、助けが必要です。

そこで、Android の公式サイトがトレーニングに使用する最初のアプリを使用します (http://developer.android.com/training/basics/firstapp/starting-activity.html)。

2番目の活動部分の作成について混乱しています。したがって、意図を渡した後、(XML の代わりに) Java コードを使用して新しい TextView を作成するので、xml を使用してその TextView を作成しようとしました。2 番目のアクティビティ用に xml に新しい TextView を作成し、次のような ID を付けました。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".DisplayMessageActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" 
        android:id="@+id/new_Text"/>

</LinearLayout>

2 番目のアクティビティの Java コードは次のとおりです。

package com.example.myfirstapp;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.MenuItem;
import android.widget.TextView;
import android.support.v4.app.NavUtils;

    public class DisplayMessageActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Get the message from the intent
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        // Create the text view
        TextView textView = (TextView) findViewById(R.id.new_Text);
        textView.setTextSize(40);
        textView.setText(message);

        // Set the text view as the activity layout
        setContentView(textView);

        // Show the Up button in the action bar.
        // getActionBar().setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

変更する前は、すべてのコードが正常に機能していました。私が変更され

TextView textView = new TextView(this);

に:

TextView textView = (TextView) findViewById(R.id.new_Text);

しかし、何らかの理由で new_Text が見つからず、Eclipse は main.xml からの ID のみを提案します。なぜそのようになっているのですか?R.id.blabla が main.xml からのみ ID を取得するためですか? では、レイアウトが main.xml からのものでない場合、Java コードを使用してレイアウトを作成する必要がありますか?

4

3 に答える 3

1

この投稿には多くの混乱がありますが、まず最初に:

最終的にユーザーに表示される予定の各アクティビティは、独自の XML レイアウトを取得します。新しい Android プロジェクトを開始すると、デフォルトで res>layout フォルダーにある 1 つの XML レイアウトと、デフォルトでユーザーが直面するビジュアル アクティビティとして機能する 1 つのアクティビティが提供されます。

あなたの目的のために、活動が「視覚的な」活動であることを意図しているかどうかを判断するいくつかの簡単な方法は次のとおりです。

*アクティビティまたはその他の Android スーパークラスを拡張します *「onCreate メソッド」があります (通常はクラスの上部にあります) *その onCreate メソッド内に、次のような setContentView というコード行があります。

setContentView(R.layout.httpex);

setContentView メソッドは、アクティビティと xml レイアウトの間の接着剤のようなものであるため、重要です。R.レイアウト後。_ __には、使用する XML レイアウトの名前が入ります。

コンテンツ ビューを適切なビューに設定した後でのみ、作成した ID を使用して、xml レイアウトの要素または「ビュー」をアクティビティにリンクできます。このような

TextView textView = (TextView) findViewById(R.id.new_Text);

コンテンツ ビューを httpex.xml に設定すると、httpex.xml および ect 内のビューにのみリンクできます。

私は初心者のためのspftスポットを持っています。この群衆は、彼らの無知のために新しい血にどのようなディックスになることができますか? thenewboston[dot]com にアクセスしてシリーズ全体を視聴してから、このような多くの質問に投稿してください。

于 2012-12-25T12:43:03.637 に答える
0

findViewById()メソッドの前にsetContentView()メソッドを追加します。

于 2012-12-25T12:44:36.007 に答える
0

ウィジェットを呼び出すことができるのは、アクティビティの特定の XML に対するビューを設定した後のみです。たとえば、Main を呼び出すアクティビティがある場合、その特定のアクティビティの UI として 1 つの XML を使用するため、その特定の XML で作成されたウィジェットを呼び出すことができます。コードを投稿していないので、TextView で 2 番目の XML を生成しようとしていて、それを呼び出すだけだと推測できます。アクティビティの最初に、ウィジェットを呼び出すことができる XML のレイアウトを設定するときに、ビューを膨張させて 2 番目の XML を呼び出す場合を除きます。

あなたの質問を正しく理解できたことを願っています。

于 2012-12-25T12:32:18.467 に答える